From 38da40d2a2384df2827b6d34b84cb0304cedd8c6 Mon Sep 17 00:00:00 2001 From: Eric Lassauge Date: Tue, 3 Mar 2015 13:04:48 +0100 Subject: [PATCH 1/2] Added User-Agent --- nio-http.cc | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/nio-http.cc b/nio-http.cc index 7336baf..d8c6b64 100644 --- a/nio-http.cc +++ b/nio-http.cc @@ -26,6 +26,8 @@ static const char *cvsid = #include #include +#include "setup_version.h" +#include "ini.h" #include "resource.h" #include "state.h" #include "simpsock.h" @@ -122,6 +124,9 @@ retry_get: else s->printf ("Host: %s:%d\r\n", host, port); + // User agent loosely based on RFC2616 + s->printf ("User-Agent: Setup.exe/%s (Cygwin; Windows; %s)\r\n",(setup_version[0] ? setup_version : "unknown"),is_64bit ? "64 bit" : "32 bit"); + if (net_user && net_passwd) s->printf ("Authorization: Basic %s\r\n", base64_encode (net_user, net_passwd)); -- 2.1.4 From d6d414e073e11146d0a822dfd049ba66e98dc46f Mon Sep 17 00:00:00 2001 From: Eric Lassauge Date: Tue, 3 Mar 2015 13:06:07 +0100 Subject: [PATCH 2/2] FR patch --- .cvsignore | 1 + .gitignore | 1 + AntiVirus.cc | 4 + IniDBBuilderPackage.cc | 6 + Makefile.am | 5 +- PickView.cc | 56 +++++ check-nd.bmp | Bin 0 -> 106 bytes choose.cc | 14 ++ configure.ac | 2 +- crypto.cc | 51 ++++- cygpackage.cc | 10 + cygwin-setup_fr.ico | Bin 0 -> 65847 bytes cygwin-terminal_fr.ico | Bin 0 -> 55052 bytes cygwin_fr.ico | Bin 0 -> 146244 bytes desktop.cc | 15 ++ geturl.cc | 20 ++ ini.cc | 29 +++ install.cc | 90 ++++++++ localdir.cc | 4 + main.cc | 20 ++ msg.cc | 4 + net.cc | 4 + nio-file.cc | 4 + nio-ie5.cc | 4 + package_message.h | 5 + package_meta.cc | 39 ++++ postinstall.cc | 4 + prereq.cc | 16 ++ propsheet.cc | 5 + res.rc | 565 ++++++++++++++++++++++++++++++++++++++++++++++++- resource.h | 5 + root.cc | 22 ++ sec-pubkey.h | 14 ++ site.cc | 14 ++ source.cc | 5 + splash.cc | 13 ++ threebar.cc | 11 + 37 files changed, 1047 insertions(+), 15 deletions(-) create mode 100644 check-nd.bmp create mode 100644 cygwin-setup_fr.ico create mode 100644 cygwin-terminal_fr.ico create mode 100644 cygwin_fr.ico create mode 100644 sec-pubkey.h diff --git a/.cvsignore b/.cvsignore index 26d9178..8bc3d9f 100644 --- a/.cvsignore +++ b/.cvsignore @@ -8,3 +8,4 @@ GNUmakefile make.out .git tags +.orig diff --git a/.gitignore b/.gitignore index 2186aac..48d8983 100644 --- a/.gitignore +++ b/.gitignore @@ -9,3 +9,4 @@ make.out CVS tags autoconf.h.in* +*.orig diff --git a/AntiVirus.cc b/AntiVirus.cc index 7dd01c4..3f14185 100644 --- a/AntiVirus.cc +++ b/AntiVirus.cc @@ -31,7 +31,11 @@ /* XXX: Split this into observer and model classes */ /* Default is to leave well enough alone */ +#ifdef LANG_FR +static BoolOption DisableVirusOption (false, 'A', "disable-buggy-antivirus", "Inhibe les anti-virus à l'exécution."); +#else static BoolOption DisableVirusOption (false, 'A', "disable-buggy-antivirus", "Disable known or suspected buggy anti virus software packages during execution."); +#endif static bool KnownAVIsPresent = false; static bool AVRunning = true; diff --git a/IniDBBuilderPackage.cc b/IniDBBuilderPackage.cc index 7ee2af4..ca369af 100644 --- a/IniDBBuilderPackage.cc +++ b/IniDBBuilderPackage.cc @@ -57,9 +57,15 @@ IniDBBuilderPackage::buildVersion (const std::string& aVersion) { char old_vers[256]; snprintf (old_vers, sizeof old_vers, +#ifdef LANG_FR + "Ce fichier ini correspond à une version plus récente de setup-FR-%s.exe. " + "Si vous avezs des problèmes lors de l'installation, téléchargez " + "la dernière version depuis http://lassauge.free.fr/cygwin/setup-FR-%s.exe", +#else "The current ini file is from a newer version of setup-%s.exe. " "If you have any trouble installing, please download a fresh " "version from http://www.cygwin.com/setup-%s.exe", +#endif is_64bit ? "x86_64" : "x86", is_64bit ? "x86_64" : "x86"); _feedback.warning(old_vers); diff --git a/Makefile.am b/Makefile.am index 88330d5..06d1598 100644 --- a/Makefile.am +++ b/Makefile.am @@ -130,6 +130,7 @@ inilint_SOURCES = \ crypto.cc \ crypto.h \ cyg-pubkey.h \ + sec-pubkey.h \ cygpackage.cc \ cygpackage.h \ desktop.cc \ @@ -277,7 +278,7 @@ inilint_SOURCES = \ regex/regex.c GITVER := $(shell cd $(srcdir) && git describe --match release_\* --abbrev=6 HEAD || "N/A") -VER := $(subst release_,,$(GITVER)) +VER := $(subst release_,,$(GITVER)-FR) setup_version.c : $(srcdir)/ChangeLog Makefile @echo "Setup version: " $(VER) @@ -290,7 +291,7 @@ setup_version.c : $(srcdir)/ChangeLog Makefile res.o: @SETUP@.exe.manifest .rc.o: - $(AM_V_GEN)$(WINDRES) --include-dir $(srcdir) -o $@ $< + $(AM_V_GEN)$(WINDRES) -DLANG_FR --include-dir $(srcdir) -o $@ $< setup-src: @ver=setup-$(VER);\ diff --git a/PickView.cc b/PickView.cc index 00a3c3a..34a1f81 100644 --- a/PickView.cc +++ b/PickView.cc @@ -30,6 +30,30 @@ using namespace std; +#ifdef LANG_FR +static PickView::Header pkg_headers[] = { + {"Actuel", 0, 0, true}, + {"Nouveau", 0, 0, true}, + {"Bin?", 0, 0, false}, + {"Src?", 0, 0, false}, + {"Catégories", 0, 0, true}, + {"Taille", 0, 0, true}, + {"Paquet", 0, 0, true}, + {0, 0, 0, false} +}; + +static PickView::Header cat_headers[] = { + {"Catégorie", 0, 0, true}, + {"Actuel", 0, 0, true}, + {"Nouveau", 0, 0, true}, + {"Bin?", 0, 0, false}, + {"Src?", 0, 0, false}, + {"Taille", 0, 0, true}, + {"Paquet", 0, 0, true}, + {0, 0, 0, false} +}; + +#else static PickView::Header pkg_headers[] = { {"Current", 0, 0, true}, {"New", 0, 0, true}, @@ -51,6 +75,7 @@ static PickView::Header cat_headers[] = { {"Package", 0, 0, true}, {0, 0, 0, false} }; +#endif // PickView:: views const PickView::views PickView::views::Unknown (0); @@ -237,6 +262,18 @@ PickView::views::caption () { switch (_value) { +#ifdef LANG_FR + case 1: + return "Tout"; + case 2: + return "En attente"; + case 3: + return "À jour"; + case 4: + return "Non installé"; + case 5: + return "Catégorie"; +#else case 1: return "Full"; case 2: @@ -247,6 +284,7 @@ PickView::views::caption () return "Not Installed"; case 5: return "Category"; +#endif default: return ""; } @@ -445,8 +483,13 @@ PickView::init_headers (HDC dc) // FIXME: What's up with the "0"? It's probably a mistake, and should be // "". It used to be written as 0, and was subject to a bizarre implicit // conversion by the unwise String(int) constructor. +#ifdef LANG_FR + note_width (headers, dc, "0", HMARGIN + 18, bintick_col); + note_width (headers, dc, "0", HMARGIN + 18, srctick_col); +#else note_width (headers, dc, "0", HMARGIN + 11, bintick_col); note_width (headers, dc, "0", HMARGIN + 11, srctick_col); +#endif // accomodate the width of each category name packagedb db; @@ -510,8 +553,13 @@ PickView::init_headers (HDC dc) } // ensure that the new_col is wide enough for all the labels +#ifdef LANG_FR + const char *captions[] = { "Désinstalle", "Saute", "Réinstalle", "Récupère", + "Source", "Garde", NULL }; +#else const char *captions[] = { "Uninstall", "Skip", "Reinstall", "Retrieve", "Source", "Keep", NULL }; +#endif for (int i = 0; captions[i]; i++) note_width (headers, dc, captions[i], HMARGIN + SPIN_WIDTH, new_col); @@ -911,9 +959,17 @@ PickView::paint (HWND hwnd) if (contents.itemcount () == 0) { +#ifdef LANG_FR + static const char *msg = "Rien à Installer/Mettre à jour"; +#else static const char *msg = "Nothing to Install/Update"; +#endif if (source == IDC_SOURCE_DOWNLOAD) +#ifdef LANG_FR + msg = "Rien à télécharger"; +#else msg = "Nothing to Download"; +#endif TextOut (hdc, x + HMARGIN, y, msg, strlen (msg)); } diff --git a/check-nd.bmp b/check-nd.bmp new file mode 100644 index 0000000000000000000000000000000000000000..a5d3aa668b55cd0c06ab54e92875135d066f5484 GIT binary patch literal 106 zcmZ?r&0>H6J0PV2#N1HK$iN7e&;gQ1_#hZ8044ta|IhIM0RzK#D9(0ZV906!;sX#Y O&A`C$7sv)-kU9YVDitpP literal 0 HcmV?d00001 diff --git a/choose.cc b/choose.cc index ec42c94..863edd5 100644 --- a/choose.cc +++ b/choose.cc @@ -62,9 +62,15 @@ static const char *cvsid = #include "UserSettings.h" #include "getopt++/BoolOption.h" +#ifdef LANG_FR +static BoolOption UpgradeAlsoOption (false, 'g', "upgrade-also", "Mettre à jour les paquets installés"); +static BoolOption CleanOrphansOption (false, 'o', "delete-orphans", "Effacer les paquets orphelins"); +static BoolOption MirrorOption (false, 'm', "mirror-mode", "Ne pas faire les contrôles de disponibilité lors de l'installation depuis un dossier local (il faut que ce dossier soit un vrai mirroir !"); +#else static BoolOption UpgradeAlsoOption (false, 'g', "upgrade-also", "also upgrade installed packages"); static BoolOption CleanOrphansOption (false, 'o', "delete-orphans", "remove orphaned packages"); static BoolOption MirrorOption (false, 'm', "mirror-mode", "Skip availability check when installing from local directory (requires local directory to be clean mirror!)"); +#endif using namespace std; @@ -274,9 +280,17 @@ ChooserPage::OnInit () ClearBusy (); if (source == IDC_SOURCE_DOWNLOAD) +#ifndef LANG_FR setPrompt("Select packages to download "); +#else + setPrompt("Sélectionnez les paquets à télécharger."); +#endif else +#ifndef LANG_FR setPrompt("Select packages to install "); +#else + setPrompt("Sélectionnez les paquets à installer."); +#endif createListview (); AddTooltip (IDC_CHOOSE_KEEP, IDS_TRUSTKEEP_TOOLTIP); diff --git a/configure.ac b/configure.ac index 32a3b01..2a45ece 100644 --- a/configure.ac +++ b/configure.ac @@ -17,7 +17,7 @@ dnl Autoconf configure script for Cygwin utilities. dnl dnl Process this file with autoconf to produce a configure script. -AC_INIT([setup], [0], [cygwin-apps@cygwin.com]) +AC_INIT([setup],[2.844-FR] , [cygwin-apps@cygwin.com]) AC_PREREQ(2.60) AC_CONFIG_AUX_DIR([cfgaux]) AM_INIT_AUTOMAKE([1.12 subdir-objects foreign no-define -Wall -Wno-portability]) diff --git a/crypto.cc b/crypto.cc index 13270a7..74d875c 100755 --- a/crypto.cc +++ b/crypto.cc @@ -35,6 +35,7 @@ static const char *cvsid = #include "geturl.h" #define CRYPTODEBUGGING (0) +#define SECONDKEY (1) #if CRYPTODEBUGGING #define ERRKIND __asm__ __volatile__ (".byte 0xcc"); note @@ -45,6 +46,18 @@ static const char *cvsid = #endif /* CRYPTODEBUGGING */ /* Command-line options for specifying and controlling extra keys. */ +#ifdef LANG_FR +static StringArrayOption ExtraKeyOption ('K', "pubkey", + "URL d'une clé publique supplémentaire (format gpg)"); + +static StringArrayOption SexprExtraKeyOption ('S', "sexpr-pubkey", + "Clé publique supplémentaire au format s-expr"); + +static BoolOption UntrustedKeysOption (false, 'u', "untrusted-keys", + "Utiliser les clés non-fiables du fichier last-extrakeys"); +static BoolOption KeepUntrustedKeysOption (false, 'U', "keep-untrusted-keys", + "Utiliser les clés non-fiables et les garder"); +#else static StringArrayOption ExtraKeyOption ('K', "pubkey", "URL of extra public key file (gpg format)"); @@ -55,12 +68,20 @@ static BoolOption UntrustedKeysOption (false, 'u', "untrusted-keys", "Use untrusted keys from last-extrakeys"); static BoolOption KeepUntrustedKeysOption (false, 'U', "keep-untrusted-keys", "Use untrusted keys and retain all"); +#endif /* Embedded public half of Cygwin DSA signing key. */ static const char *cygwin_pubkey_sexpr = #include "cyg-pubkey.h" ; +#if SECONDKEY +/* Embedded public half of second DSA signing key. */ +static const char *second_pubkey_sexpr = +#include "sec-pubkey.h" +; +#endif + /* S-expr template for DSA pubkey. */ static const char *dsa_pubkey_templ = "(public-key (dsa (p %m) (q %m) (g %m) (y %m)))"; @@ -437,6 +458,9 @@ verify_ini_file_sig (io_stream *ini_file, io_stream *ini_sig_file, HWND owner) { /* DSA public key in s-expr format. */ gcry_sexp_t dsa_key; +#if SECONDKEY + gcry_sexp_t dsa_key_second; +#endif /* Data returned from packet walker. */ struct sig_data sigdat; @@ -467,9 +491,23 @@ verify_ini_file_sig (io_stream *ini_file, io_stream *ini_sig_file, HWND owner) #if CRYPTODEBUGGING char sexprbuf[GPG_KEY_SEXPR_BUF_SIZE]; n = gcry_sexp_sprint (dsa_key, GCRYSEXP_FMT_ADVANCED, sexprbuf, GPG_KEY_SEXPR_BUF_SIZE); - msg ("key:%d\n'%s'", n, sexprbuf); + msg ("key0:%d\n'%s'", n, sexprbuf); #endif /* CRYPTODEBUGGING */ +#if SECONDKEY + /* Next build the second built-in key. */ + rv = gcry_sexp_new (&dsa_key_second, second_pubkey_sexpr, strlen (second_pubkey_sexpr), 1); + if (rv != GPG_ERR_NO_ERROR) + { + ERRKIND (owner, IDS_CRYPTO_ERROR, rv, "while creating second pubkey s-expr."); + } + + #if CRYPTODEBUGGING + n = gcry_sexp_sprint (dsa_key_second, GCRYSEXP_FMT_ADVANCED, sexprbuf, GPG_KEY_SEXPR_BUF_SIZE); + msg ("key1:%d\n'%s'", n, sexprbuf); + #endif /* CRYPTODEBUGGING */ +#endif + /* Next we should extract the keys from the last-extrakeys file, and flush it; we'll only return them to it if they get used. OTOH, should we do this at all? The extrakeys @@ -632,6 +670,14 @@ verify_ini_file_sig (io_stream *ini_file, io_stream *ini_sig_file, HWND owner) // Well, we're actually there! Try it against the main key. rv = gcry_pk_verify (dsa_sig, dsa_hash, dsa_key); +#if SECONDKEY + // And now try it against the second key. + if (rv != GPG_ERR_NO_ERROR) + { + MESSAGE ("Testing second pubkey\n"); + rv = gcry_pk_verify (dsa_sig, dsa_hash, dsa_key_second); + } +#endif // If not that, try any supplied on the commandline. if (rv != GPG_ERR_NO_ERROR) { @@ -680,6 +726,9 @@ verify_ini_file_sig (io_stream *ini_file, io_stream *ini_sig_file, HWND owner) } // Discard the temp data then. +#if SECONDKEY + gcry_sexp_release (dsa_key_second); +#endif gcry_sexp_release (dsa_key); if (sigdat.dsa_mpi_r) gcry_mpi_release (sigdat.dsa_mpi_r); diff --git a/cygpackage.cc b/cygpackage.cc index 74d040d..0e54e71 100644 --- a/cygpackage.cc +++ b/cygpackage.cc @@ -77,6 +77,11 @@ cygpackage::createInstance (const std::string& pkgname, temp->status = newstatus; temp->type = newtype; temp->setCanonicalVersion (version); +#ifdef LANG_FR +#if 0 + fprintf(stdout,"name='%s' filename='%s' ",pkgname.cstr_oneuse(), filename.cstr_oneuse()); +#endif +#endif return packageversion(temp); } @@ -108,6 +113,11 @@ cygpackage::setCanonicalVersion (const std::string& version) packagev = "0"; vendor = version; } +#ifdef LANG_FR +#if 0 + fprintf(stdout," Version='%s' pVersion='%s' Vendor='%s'\n",version.cstr_oneuse(),packagev.cstr_oneuse(), vendor.cstr_oneuse()); +#endif +#endif } cygpackage::~cygpackage () diff --git a/cygwin-setup_fr.ico b/cygwin-setup_fr.ico new file mode 100644 index 0000000000000000000000000000000000000000..a5a7e8236cf3933d4d6c8de0357951193332cb73 GIT binary patch literal 65847 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 bKczUF^h%7*weSNL>=4+E+Xhv7_A&nhqG)7o literal 0 HcmV?d00001 diff --git a/cygwin-terminal_fr.ico b/cygwin-terminal_fr.ico new file mode 100644 index 0000000000000000000000000000000000000000..17cd76a89ab037ba7ddbb1efdb6d1985f1259c8e GIT binary patch literal 55052 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


$#(;(9qC{Le_E+Oaq%s(t(StP5TUP9(h>uwW$U zi0;y%-?%YJE~X;ZSKP=R_s7(h!i7&tMCe0^j}6{!oDR`FMDHfQu6(|EU$D7FW}Tx_ zoR40b10UUF8I!esHM*otsFjCQRhA`( zZ-1*(%@K}ehznKB?peGxpjfwDSyT9u7FC#n0sQUXG6fG#W;$+)wr|-eYqhnR_;Az3 zQI5p!d2!RJik4cSjw2ENREV57IT|gpeI#j*33_Bku8rB4l7~(baw*%B3?nM*Lfon+ zxWkU5SHrHttCs7WoLuLQ45JxMp;x_tI!qbX%+}83$zwCMmzbb3(h{SiM)f3$;E`5y z#uApp8&&s3+s&qU6f}5V8}f32UQI3P%fA=uk`GZ7Jb60S;ciw@AX_~bM6dF0mX5-Z zT<9A`*?ZSZsylCx?Q;Ijz>Dk<*%YHQNcK3r{hzR3=D~^9I0mcYYP9|&DGpYmaK9N06_(PB^&y;` zn`-PQ*N>+_fp%bx!q=Mkyy|<#IAB$Jtx-uN_~S~FE7V@=d-_%(wKn(j?ys*6Vb`ka zYa1aaH{Pk1@kvty<8v7ER(^-9iO28J4hSs~BIj`(c*dv@L~yjieZ#|UvNkq^C)M5_ z4p&+0^-uaP=#n-6Z`u> zmiXNv_)HNKj4ax7L{4q{ux_)NlCzk`a8C^>!|!058-1-VL;F3JVT}*XsoMPr0*stk zERGf{YyO}M5m+K?W*A67<1C9ew~lI}t6t+s(BhC9bZ$ss$!<|Px|$Odgn8L=v8Fu`O|CuGhCYhh-Y9YtVCY*!q2(9A&5tsFAJ2PM-bs6CPqJ7)B%3uv_wk<_AATLU9YW%vgml8 z#Y;*iyyZd4(y_jusBZ0nY0PyFDgC96S#&0$O0J0m<3e^=VJj2Fp}3S%;A*9=Su~1P zi29_#fq}ho$jyyq%AiVRn%HfcS9-KAk}%13Aa zk8{j5yjVO$^y5-mVIi@hw;EDKD`5WPRx-9S&%P!k_E;gbCkQ~qDj9DSE_DZgRO1s< zc2a@)#H7?Lt$GfQFtLYOg1}mmpt%{!o)Tz=B#ob_Dyk)t+TB<3;3?QLdsXKN>sEtu zVb=p+nE^Mg*cwXQQ@G&F*`F){?($jG=hgB8c%+A`y*}aj|1OERv&?&|Z3E7RSdH7Q#bcII6JCjdevqAyR4J z@bF=en`2epR}@0<7zuSDce-tE5i4y3j2GD>$=Jn=^^M%}mh}-ly#95mVpG(lCFJG! zs+gtausSCU!Pv)RGycRNz(HlYD!p3%sw-aQ_Ft)d>1lGQyR_^Y;R|dCnlAl<_IW0t+SM6Mv@*vr3La zLc<{{pv_|iT65Bt@<-<`{()ZFG3Vt3Phb~=4Afggu6JLvwK$d}EWYDv_1fb|m`h1p z;|w`b6>1tiFsG9}G-40wP8FM^Hj!D~^&3DV|(Pno?3)gNV`rE2IP!(F#$h)IwPVODL2S{~cDXB%-%6 zNt!irrSEq~wqTbG1Y~3qU3E;BiO(sy$_fD{3idP-tva?=y7pk&G#hq3Z3A5<6hx7> z3T&~mGh;-CK3OnQeURKESfl%%{~VLWR+u~ZpN$wM4c;ZYAI<>sl?3v<%5U#n?&K;Z zrN1gL-S95G)qEZ~0N^k%7zh(O@w%hh1l5a!tE4-)-$PopJqd*tH3O&F z@MWQqEbIsytt=0*W zml^YTVw;bY{wcF?)|wCDn50sa#!uxBA+^^JnRcECYGD*5VEb?&-x?>hI8{Q=@|Xzu zvMP1W3ukOQLRa)x4$Q0B3@OOj87EMiMBB)^RjcyF{7tTkXqgL-1p|YCKtLcRXE2W$ zK(8BEQ_x=3UC_ZNh)Y?PhVVU9@d$SIfeLq45T{8pNLLBgN|4NhzE2I7I=S(*zPyya z<-8|m?NIA+*NLp&o))?lRJtE_NQK45kt|Muzqu#Y zZFwL-kOwg%VeT~FV$pMRe~&}%j!mKsEJ?lK5h-=07!F*07S;ZX<8gO^z*Xd3m6f*zb{>tC%{Y|GKsI>Ls7e#`SMFEa7R!JJ|Rb4@YahIv6S8Hmg(HYA( zxbn6-yF9NpJAN`d*%f-btEh^y6_{7^scl?PW?_?!V!sxJxv4EY=Yx@S1i_vU%FII{ z!pL-w3kHCFAL=%F3C>(ZANB)y#}|@hWtXD`QMiP7eB$btdBP#+RM<&`Y9-odpKD+r zN%frPIH%G=UWb7y7#0pkCQ09os(jCTTUus3MtimW zj;kgTpL*6h0jIpxH|b$p6IpM>6i19IiB#A_=*1jb>WCaG#n;|}ERd2VH_6$8JoDNn zRzK0K-#`JcT`y5iH=som%}jBY z$Z#g0JfbUASa&1T&1ktxzQUl@Z2ID$kIRtTfnju*A?N z7ZGbW+cgZUie_7|;s)~jVwNZ-jZ{I!p0VB*@4M;Ooh!srP2{n1N;Q{J<~7q>bgkK1 z9QN=?5n7F~4SAIa7Y)tX3*5O9u9*a)0Cglh)V*B)|L{@WM1-3>7Dr%(y;F&_{9Ylv zF`W@H0-r$Vf$qUtTw%08ax>Mk`2nluJwt@8e!ALx*|RhH=iqe=4+VeQ66)jmV0})z zx1_+F#kUhaqi>;*JMiVPmjXsIsuJ<^yoC|*=k;>sq;(TKQ}ck+7qr2BfN&h_5ExY9 zP6#K#-TL@(+K|wiu;Mnv5jpb-<=f)YV)|%RIb#3T7Ce(1I(3oB9$_nxr03z0g>_Gs zofKLSJ|cf#{xd-DE?V)sEFdsM2|$w~7;Ub^Y$w7+ya&D&zK4CjYH+Hzr9qu1c#& zNrS+cK%)@AZf3whRCuq%)T!|NlVB5@{~H)Sp<6BaHQPe|rM?Sg`$;Svk10IoNq&?% zCO3j*D`&8m8ETP5u191MxsbcISpBMwLu*nX*FVZ`Tj^m7xgw9R@bj5fk5pdMB>0+huIljcG9#^e2@5BVP4oM+L zT~B;B(*eB`_(eFhv#!fXm`tF(FdY+ODjO|BJS{RxtOH~Hu1Xds{g-3r9R!Ma&(8>R zB|%1HyZ?TEjX$IO!{+y5PpCEoPTAx6DtZ1@`u@NOFgwh>Cp&P`$XK~}GGEtJSk_rf zfA0_9h)kx*WV&E7VJQF$rksQ4q*Hx!ttRZQQ+)%&BW4!C;Ew2lkbzOjkx-c`BOp+u z-NHnbNK`(IAgDAYOzD?OQ+0cN_Rn&fYhNQ2<2h)$izZO3yQV( zUo|~G)Mi@z`3Ix(gbYcnmYW_Q&^abJL#^dHU4edxL5tH;pi3e=hIje1%L27kC2GX< zOIkwn*|+Jq9d5de#IUHn#R)Yu0|M>0NQ?~@7Ajm@{@QsSd69&8+flQ|U5)-zhb)f? zrdS$O-C*jssR`ZfAD$8BndWIM{|3-wVWiQ^zwfk|{q-9$Z{Y<)@pX`NbWXGKAy%Dc z;9SWRD>hAFC7O>Alr2_bITywwa4<(m4tQ_YWb`XQqfyD=q0(HwHN3$Yg!P`=$?Y9E z@}BEU7>V7JZx_BCrG>fL`d8ES@zl1XOThv!J7!rue&&<&&1d3;IE6kXE|QZ`M&p@* zA4Z=cpvE>-Nbd*-^MdO+#Jz>-x^ohR)HaNt{wf z>+yZG zeR<=9Aaq3Ez*mvJpp-Y}cY0tYd(kjk{w4TT{Ds+ip2I}PqCU6Q#VE*hnz|;+HsRrd zxL+cYSuF$Pd6zTs{J6B5wG;fEpHQ7c#H~FK1x(_ zNs4A~fX}xQUFjZJmDd-A01-M3T=A*jk&XS7Xt}l}*=(=HlW zpe+8wEpg+F(0n|yay!urp}Pgk=&Jjh!pz8Ooqn;Z1~uf3eG3*?xb=*Qf?~;67Oc-6 zluo5G54d%!E5 zZN|venxv8m6XPRz*n-`B30?!w9$>MbXadk27lb=N7%mzXWkI-K>o;bc(gL;THq6uz}a~ zb0c&6vofq#t!y8j1XMI*`;4<#V%3Q+jUBluK#*lpSbvAY5w2V-9y^L*K1}2Yca87TCjYOCKZ9zuuD$KlmPhgDA!NYrAui z-aD}h+m+V`m>B+Y7}&o_k3S8)8UsDryR%tYhaMXd z#LqVPSYjVm9?={tTt@$}NW?3;O%QlPmNvXm``4)n*vz$cp+4+24P5^70yr&o7t#{4 z5ktBSH+05CLt2h-Rgz2;2ETA>zih;)U$iW-YiYrLUWhbfFr&*b==nNV_c_vm-8jdn zy@V%SG}5>ed=ulP-JW6cSqp2S490}jDPleruHFIDp_>4CLGziBzd^2AIAv+oqNM@f z)muR@_PsVH<&2M-I;0~D4qmHa?PVpJ8Gruvpoa+XN^LMmZ-Cn$wdJoF%cawqOV`S- zd!iomoO+wvrx946oKJfuoAvSVJ}-*hQzZ`sob*-%;)`q%$h9jc?p&sCqtoBN)as?cf%|7m@hx+roYHv91%(W}v@x$_2?72XQ zH#Yd*j4tsx4pp_NOUA{KP~#0~h!B&aen|8D6G$S4Fv%FVt6nT0sWMe#N5{CLg9GSC z4EdLVNie*)MR#Ux0CbGTi(n)T$Gc^J^6fXk(@tI;9~`> zEn_~5<+A<4W7xf6(597W5hP>x#|8b}9le?gDfoa#5#(B^$q1wZ|BumY2O75*agkmp zWWO(GhZp?POHF9HK1V{twNS21(YJu5hO>aT71w*W=nXgCnxCHW1O)||{J!Zp20n2W z8a3>o`)ngzSByRrC||Q_y~+t6fTIQC*I02;Um)>$EyJ4gbCXW=-{4+WRcdOgZw=TH z=%2_;2*HZejg%*i$9hntko)l0labdK=6aj}Ze?RF>}Zui9w6M&RW_N?8m+wt;^vz? zyZicZUt7UCXb7|O)3s)A_Fy8D$29^3u1l+{t84!qD@%Pw9avtT@m9$Nx9BULD_Nlr zJ?Mvp39JbFQdJXMazzvoQTs_CFzE+PMp(W;pCoO)*l39g&WJH9g*#qN3jhre*)sA* z5oQUtd0@@akxv=)dtG9lUS{Fe_{Cs>AZ+%?4x4B(t zZ-`ze_A$^!)S4YaT*I%bZganG?IR*eyv_Kl@ANE4DRKcJ#gtB~R;0WCGIT+Pbd`J< z>+e`ugDw7iQ6?vXA)^vjBTFb|oE<$gp*>>GMMO6CdxDz($y-P44SRN>P%Dse(3|D% zu=VrF0fZO^0YLw=HIK&?^R&!NQ$Igqy(I%Q>Oh0y=Iwq`2G|*}%erDi!C0=wlQA6; zKH26}rw#9$=)KApiEExg4tQW|AX@&*Tn8e+KuCkW^2ySl0xcqN@>dxT@@?AD^n~Z& zlm4LJ317Xckmo+wU`%J$+SB>&F~rkd??=slKvFXwpUk6d@8|~ef1tPj@AlS71vAf{ zyfF+Z6_ex7C(OS__%E?vXznSgkbe)Hh3U&$u4)EBgQu1O&}5LHv9i$iRjsos^AM8N zr=Dlx{<)8cVk4Aj(vcF>uLEbz=n#*?AC-|B(@X?=*}P+&Z*au?J^(FR$MP!f`&*UdV#QuYc*{!$sz1$sn{GPNf}4VsnEW(1ktl9W@9MJsEeIEx3MU3v zjlh&PFQ%KQIgs+smIaNxLMMAZY%6!r&NWCzc>Gv~^g6bu`5(IvjqHASC63>+*LdD5 zG3#|tg7DlR=)G*0eSkT+$9QfEo{+--Ved`gv3$P9;mZ;#AxZW+kox&-1?T@BjHcb2r_tS5 z1O+V3=-2W_L?yARiW!)OE>xea2#)*worLGp&8!dou~%GPRDC#*mGHB ztW(uBrW;WvTYGXr^C3Cy%SaKHMk zpu@ttE+t$ZuC%b8sNnHCta|3Ai?Vhk%ck$+#NQGk`?`YN1EcD{k5^2;l~%gTrK2-q!RTYcmqQqq7Xq4G>pt?!7#7&ojDFaaSW6=EeR6Zx7gC5=nXe4FwGM5%!;}Bi$*1n)J}Vvb zCq(B0>ZT}3M1mtr*aJ^5!Toj_Z<}W~40w~A{Qc8vYHAK|@A?3)EXY3Eu zk{08!8DE%4YU6qDm+}6+=bfn&B2yztO7{FF^8P{>)>bIPo?f#9tvI`m zUKc01JlP(qdOmzez*s-EiUj1T@Ngoy)|T^qwq#+1PpK{IsO<7Y7uEFD1f92Iv9nKk zh>wwS9z64m=ZZ1z0WsnyF;ed_6}(st|R=ljHYXoTu?wY=f?5w+HygZF0w z?th;Uxq0LbS&32B>x%CmD&ST&UzTB#Zc(fIwJ+t3b@5+B*VKM}T-IZ#vJ|@Ja${)L zeO#?_R>ee;tdjA_fZY58vm7V<`!~4#abWaZXuoS<;F*%_voeOK6gNGyyIG%kqCr)P zOecOqRWXoy@vh5+qVM`7_NBEG%+l6rSuSrwLt=Xdf{8;HM@1xd?1(D%EHvE)S1qn> z9b=n-o1js~7im@Taa(xn`Z(*Qm<`8EL@6V~C$ONoPosT`3tsTDdSS3a{anyiZ@G>! zB@xk1=$7T?k-C_u+92tNWuG{bhVHhiwb(2-hibkaUH>4Bx49xT>0C?8%_AR~9Pq`y zfKN4J7c9%5Ax%xq531}e@Us6Ew?N_@kCLZegeHDf3ZE(4u6=9F()lyUogJ0^^#|DN zXZ7mu9aw&QfMc{^xewoU_r{HBX@~0c^Ow5!5RX%zd(_Xb{p<$o!9f+WB$C3Asm|ok z>74vH!z+TW?sWNzQJq8cW@gIzT;W$ zvpmoMZxoi*go~$3_9n{ozS@*CPg?)EqdtNrVR|q}V5YyTc;VZymCVudh`!x76F%Mj zChSd0ReM%>u#WuWl*;+Oda`kcWuCRWOT?vO7nZm2z8!-XKwkoSgQsI1T%DbXclYU( zJeqh>C+F*Y=FXI~^X|7KCwDVEPB4BoncP<~O}@ddoPS-vH(B*2n&9O(>|=eQ-}(Z+ zl(CQQJ0S6_%8MLGUVeDNaC6Jmr$;6g_xfPutj0Gcj~7&*Wqq#sRpCI%;s~`#dRik} zrn5lxgOSH@i^qOs+yR&EQd|-$_B`9^-hb7lCAE0|a(9vmM*VS%(CsRRgJk!2Z?0oM zs$xDbGAmvYTb_TW(_Q7}x>sXL-w!Rfi{R|%G4 z2>hqMH3crw)k|EmohS%!cU0vWuEP6RzK`e5IlQs=D^}eI#6g#r>nVW09S%7=S3mjf z_W16}x7~S>!JiHZC@q*R`M+B5v=6D#FLHj}xwV`8_%`*qeRBLVXPA`x>ykE>8V7!k zzOX#2)y=B1(;;{HdF;r#HAt3uo4#j$pzqH8FXMeZhqHi*fNukP6S~k2Khg-QQr)Df zYO1+4b8-tca!w?zyNvFJQ^s8MoxjqK&woC*@absID0mmixq3U8uYPfDX5K4O_HXYD z@8I8deqPw>?oKDP-p;MNuHBkh;&}e-l!x-<(dvDfyV^pPUsKEAZ_Nf`tka|$x z^-zx6AJj51vLM_P>Q#t4>6n%BT)db&&ZHOH5j^37N3btlWq*@38O+zz#2x&>%t9cA za(K~Uosoi@&-B^2H_2yuUDmufkC#PyHfAfF(G7PxPG(R`wJma@bOQy^DV~XbqM0R? zqqciasW&-lZ5}ZSO@1AXE5^8)q&ql%9XJe%?4GXdQAA6_-@jJ3jm>~V6f$!1CB5U9 zC7$jky8dKIMAO5{q0e@A|J?wcy6UuIPaZR!JM%?KuZ-||rBRYe96J!uVcY5|{(K3q zo-0x@W!W=eWbs8oLP25ZkoXo75{i3U{j8mN{5a^Z+S|T(cIDfF%iW9THd9@ee!WDO z%1R~Y6HMi2-5MRgQHX-HS2vY(SKF=zq2olmpHsLyehOMVuUIm9aWQ1p)zIRL*pP%m zWZ?zA{5==t$^;~a+vhr^bEGA_;@E<|60`7eB|0|Du&5`lk*hMdEWN2epmKzVHf*@w zrw+fg`@M!#gI*Vr?B$795<;=LJy_4UR=KKSlSAVZv{ zxs_FiUGQN$rBMFG5NwSIDRJ@hFuS2^6W)t1pQhO9WaZ1OBYBn{%SN9)OY2c3`|i4| zdcM=daQ%V3I}bANIPl_hil9}aqo}T>`q?iNhmH=@_l^s@mijVrz28*K5JfZ_`0V46 z^E(fbwIr}>Sy^q#3N^8@(TTg%+iaDBdr5BO7b)!g-XY2CQ|yo1b)4b$jN*(kEIaYk zIZAAQSdWLQBvUg8cs?Hq3cw*#=>#)&O1GYS z7vsFwou{9xj6p65%o%D(yN$D zVzXR(P>jajWubz?D!x8p^;8pG5LuHvJk4@WKA((AX#M|CZzaeAg3ax9S(3w4CKne7)= zC*$HawB7iAZd=zL-6}IBgU;Ao+r5tl^(gN@X0N&1dU?usP1in3@eSnW&+X0})%oC8 zo3E6RpH7!QCDf6B`?mbPST{Ep&8L$wGet^cr8iIT2M5j{;C)k|-)8?Z`L)59srJb< zOZ{EP_0@_P>k5QMJEiPfw8xF(s$ zm@Epj(vEJ|fBX4V%w&ytw%UgEGx6rZZ+y($EnQ8YsRqgvtE=ZnOPpB#i?Rb?L~IdihbOl<1>Ez;2}^Z7MvzWCJCw)c-n&%956c>dJk z)(}&+S9j#gF1&uLN^`ulhI=M9pBdXK@{*c#<0;KUvRjO-lCqNlodej&5|>s88 zoK>2Jf@~|Z%m@YExtCHdX~{u(yz8F9TbmopzHNn1b(Ngo%5@$~JNuFRiRp7nxcBEF z83QbUlsJ4%+o8MkBs*EC=1D>xOFwoo+0Ck3vSR?lH0jK)?Yi4tS{}9>bny|lNUHv^ zJq_A{YP|ab%Ovk@Hyq_$Qat9nH;T^sUe7 zidN^k>KGvMZf}DJPt2Wc#o4(pf|+mnSa!B*R!LYS^2K};SPV9P{0%E?nf8}|vyjiP zI%09zIFHNWp0n6qmKX(Ae|vk%Mp4Qaf#a9gaEh5b79EdQ%m2#MyXL|YqA0BUjVBP z%aL0O<5S83m%Pu{yk!^(>Pj!~`Wke{EnV-$36?Efncjo`I+H3PU5Cp*%j6t7w7X2w zdHvz@ona4e#9!O_&~mQdyM~v7*gsq3qEqG;+A}!=O@WGZo}BUT*Q-{tj0IIVr|6Y7 z^q;mUk1FO#i`j?0y{O%M^HZ6nWf4(pO2{?&>-oau*?Q&w4kL7QU5o z)!SpU<71!+9av0f0~MeI?J3gBk&nM{zsiD@qt3-C$ekE&U!f(QUO4UODZ6%KqF-aZ zwi~q08N&tL?k#a{Q#eVfZlW&9)M>3%XHOmFL=&g^$i4I+3wf3yd8*sSgceU$9X4=n zQSu0k>^!ta!BYir2|BjTRa{R;JR&{b zCiTSdWXs@z`Zz0xW1B?&pfL>z%)@2dsf5ayecxhZ>xRv|Q^_TwgsHw^c6{_L4SNpZO^#)YZ_?ko663 z#`gAhS8@RczTBSdlw(3BP9ao9QVO}ozL3`jHo^!*0uY| zlM`T;r9yJZzJ0=%EX(xCz{}En6Z`itaI#22AG-!{E6ymxLNzf^wSMx>()R1SgaLj} zxtB6j@E(}|_~mLJ@cjYgCA91M$^BD1t&EPei-NyC86WQtCC5iLc zHsV8~Sc1aWXY>U<9uLh=rBjC8b!_M<(3%FnVoh(R8%BNax?gi@j@b+sjR7ObU_LN7 z_{vZA)wF-^qxU|8`>J8#sg^x)_VJy`L3^%}GJ5&%4P!^xNUv`1d8BTSKVI*{yory}iWQ zV@{Gx)32i0o##Fc`N*&^u(L-$+1or&#)bw=o{btD{h=%OT%h;vhcbqvhRO(fLv%3HkO`^mx`#rnHor}SW*tQljw7{;5lR_^Ghd#5(> zy`1(J1)m&G%B%`%YnkM`nq0+Sfj2i9zjrjx_e)P4k;}-)xB?3l5E*$l%%vsX2`JM? zHVgiN-iC+hR&!8|N{c3TF208vBxqg&n(byVK`_H_`lfT&?YrY5d+IeU9k0uKNq z)3cigxl>eRSnf}T%*ny5aL`aRyqV6ueA$40XklnFBsx2rjg*)O2<$m{=6QS)27t8s zn_xj&4p9P_o>n**xj9NQT|GK!AN;wE4|X6xE?R~cFJ9!JAO`NLIRBCaEd%?CE&HpP z4~qF3pMIiqQIm77`$d9hnK$_P4Xt0&yXG%*5V4-dZTi zM@C4{1;#DObfVuoii3jUglgq1NI8z8Co3z(eORKEIXLu;cxZuy_=SZ#pHY#j-rFdPq!u&lh2)d^y1X%SOqp}%S+bb!nQXW+^_YpoxiR0aDR0{ zULFxXYlI&k7#O&IuzzYwR6tO08oVFnmzL_hJ(8}^3+^ZKu3x7cUV1UtJuo03xJO54 zZB%r0-jlu4Ks{T)caqoM`p`nQ{hprNfcStQ*aAj2BCjLBKxPAB!V+2{ePm8AP1du| z4IO0%hVH@oB~U>%kLI?$$fw&ghTcQ9n;}T#{IKaX}iaut=7 zB#qOIoD3e5v#tx2I(*>N7RTyAm{_)uc_##2@=+q?4SKLH?#D6rJbfC~+iSX4TU%~w zAsDe5w!n9s)l>+F-0lXEX#jHxZ= zxx++BhIo13xXJF_SzotDz#@olA_9nNYh^PG+i6d!BQ#YC?e+2kZtCWCy4e}=QT~_< zrKRC*uK5b0jG+S`kKB865Onk=aOV{`1st^G(J5%C?8&;aC%P^1>SVwLLh5tkg;T@< zpV!IDE?+)jS(akJ!MVS*$D{Cl?>HYHpO~T|Rs5TG&yvDuB3)cuurPo?_B-$4)9PH% zBgkIr1_m1dd%dpeuEsVtr(nVC+EGL)ARu6DZx1yuM4UbHa&F1Q(o%D{L_1lHh7?vL zxFG31chYcj8_@?T*rvgn04`Nc7!zl;c~ql~3$wI0Clr!^|Jlu>o)oaV!zza*)af4C zC8Ndd~Cc}P^u&7r*a0!L?L;ie-wqJ6#c+I}3i zwUWfDuIeMoA7JlmICx&4tk)*L_lWYd!yuV5>d-}x7-dH$51q3Yxy$n5DXVH|xhL?VaEb7Y;i_UbiN4U)goJ@*V7QR|Y@& zkEU2nfkXkqS0ivS`%|aC!Db&zLQWMn7V!A-M%b>$ZUW30Eo4tN2pyiie5Qb*fS zNfF&NKmR6SI$CL&2o6I$yuFjf-dwe&gd?&05?%6<;EISA1m?#@q^1fFLFxsIE>-a2 z`w|ZikKB>1XFe<(cz!c{Pj&zqpW%6B5Y*yw&&Y#|893t*d07$qP4Ht)k>>OL)o-3y zIWz}N){%osklCqO$K4n_Ib6?v;LZZ?*)|@x`#P+VcR8q7Wslbd%{7jHF{L)3AswLl zJ{O8_`S|f80~3?#v11BS{)MdIg@_)xM=E!yk6&C2Os51bK}(C=KJfk4^Gcy?z;ir5 z=2lctSKR)*4hfqVFA9KE-##!79OuZ#ffJkf3>&<6Gb_IO!J+E$pF` zS%%RuG3x|K8vDU1EJZXmyCzp+uDwvA3O`*V40;L#L2ep~-12h69e%Ck4m)W@w}6U- zx;Q#~Y|C9o8rWz-C`Ftc)(@yJ53?0wrC<0*ijQsGx^;dm^!pz50uv8OrrEDwo%_mn zgM6lO;D89U!4|rFP`%^`+t;OU1dR zW=0Ac%+f6f{l7f1ng(;OQQd%COb)(0X08H_ef>BX4e}8Pqm7euZ%RwDRSzAK02G79 zLB+0kx_)_71g0G1!wVNLHh!!gj`x?R0+FgIni>iFKp1}BwfhEl0Ko!_KogA!3pig- zUmr3lE|1rL7vxH$0CgZRFc8hMqoX7Cikp__4JFNNlq3j5XV7vp=I9Ttt>=e@DVLDkh~CQ1onQzyFWsk zhZqFchYt-wDI$ki0kQ@WW&ZnIJ&0@7gVO_E6;7_Mq@X?^pg{xN7~9++N(r)U&x;rF zFJ9QoN-nh-g{THOsL)J-Gw>XAoCLxg;NB>7(d=UGuFLcXZcmee;ascw!y+mgAW&zY zpcYN_YNRbG`Cj?Oi>fXz+;Og1pnkE3E{g%ef)&{>SqeVAWb?{+m>XR029N+io`MawwN;x*@cE-hkuYf>4N_85mt4g`bp+W1kO5AX z^EkIU*DNhA!pPe@I$rt6T$m;@C36M!1y(;0GFyVyeY-;}}1p511)3c(t#6Eu108ti55tQmj&u~y|y5BXte3?73 zvr;Jb)2IFI!3pv4?YtBRS)#vx55aQ9jWuOJZYrg`ZC{}eW&n`6K{DfJp>lC{R^=tB zAErLnp|Sbld%xnU$i&2rX`Sw13%Gs+UXl_M6;&=!hAq-l-Os^+JuZxy2q%dsBI~lCA(>UsGO^#_+_kOQ$~zk;cf9rnO--z7HnnP=}ov zQb;RsyQ34xPZt4J1CW@e8%U^)-!fxahsTcG0{P`+=zMgj^08xe6R)P_sc#L%x3}wp zv}15Tc#{SjGjn9W_x&6D2Cq0b$6ObWkBd{O=zEi>#dbGC%Im^c?MqCucaM)>VX&FTj@oIeCG9pf&KCN8x z$Z7oPWf0-APA|AKkb&Heg^{xd(^L*vqZAQXbW=F+QRLIk z`nLbUjG%qhgGd04W((vOUdOW`a{s{fwbjpkV^0@ubux}}n!0@8*m|%`q_%}ok^pZ2 zQ8IdP|E�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 BG(i9W literal 0 HcmV?d00001 diff --git a/cygwin_fr.ico b/cygwin_fr.ico new file mode 100644 index 0000000000000000000000000000000000000000..9955fc13b58c86d62cf4bd53939a9c4174e6f230 GIT binary patch literal 146244 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ǫ+`^XppPcz)fT_!VWK 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 literal 0 HcmV?d00001 diff --git a/desktop.cc b/desktop.cc index 33a9891..5c26fb8 100644 --- a/desktop.cc +++ b/desktop.cc @@ -48,9 +48,15 @@ static const char *cvsid = #include "PackageSpecification.h" #include "LogFile.h" +#ifdef LANG_FR +static BoolOption NoShortcutsOption (false, 'n', "no-shortcuts", "Pas de création de raccourcis de bureau et de menu"); +static BoolOption NoStartMenuOption (false, 'N', "no-startmenu", "Pas de création de raccourci de menu"); +static BoolOption NoDesktopOption (false, 'd', "no-desktop", "Pas de création de raccourci de bureau"); +#else static BoolOption NoShortcutsOption (false, 'n', "no-shortcuts", "Disable creation of desktop and start menu shortcuts"); static BoolOption NoStartMenuOption (false, 'N', "no-startmenu", "Disable creation of start menu shortcut"); static BoolOption NoDesktopOption (false, 'd', "no-desktop", "Disable creation of desktop shortcut"); +#endif /* Lines starting with '@' are conditionals - include 'N' for NT, '5' for Win95, '8' for Win98, '*' for all, like this: @@ -172,7 +178,11 @@ save_icon (std::string &iconpath, const char *resource_name) HRSRC rsrc = FindResource (NULL, resource_name, "FILE"); if (rsrc == NULL) { +#ifndef LANG_FR fatal ("FindResource failed"); +#else + fatal ("Echec de FindResource"); +#endif } HGLOBAL res = LoadResource (NULL, rsrc); char *data = (char *) LockResource (res); @@ -258,8 +268,13 @@ load_dialog (HWND h) header_string = eget (h, IDC_STATIC_HEADER_TITLE, header_string); if (message_string == NULL) message_string = eget (h, IDC_STATIC_HEADER, message_string); +#ifdef LANG_FR + eset (h, IDC_STATIC_HEADER_TITLE, "Installation terminée"); + eset (h, IDC_STATIC_HEADER, "Montre l'état de l'installation en mode téléchargement seulement."); +#else eset (h, IDC_STATIC_HEADER_TITLE, "Installation complete"); eset (h, IDC_STATIC_HEADER, "Shows installation status in download-only mode."); +#endif } else { diff --git a/geturl.cc b/geturl.cc index de4e60f..8c3ee37 100644 --- a/geturl.cc +++ b/geturl.cc @@ -69,10 +69,17 @@ init_dialog (const string &url, int length) string::size_type divide = url.find_last_of('/'); max_bytes = length; +#ifdef LANG_FR + Progress.SetText1("Télécharge..."); + Progress.SetText2((url.substr(divide + 1) + " depuis " + + url.substr(0, divide)).c_str()); + Progress.SetText3("Connexion..."); +#else Progress.SetText1("Downloading..."); Progress.SetText2((url.substr(divide + 1) + " from " + url.substr(0, divide)).c_str()); Progress.SetText3("Connecting..."); +#endif Progress.SetBar1(0); start_tics = GetTickCount (); } @@ -98,14 +105,23 @@ progress (int bytes) { int perc = (int)(100.0 * ((double)bytes) / (double)max_bytes); Progress.SetBar1(bytes, max_bytes); +#ifdef LANG_FR + sprintf (buf, "%d %% (%dk/%dk) %03.1f ko/s", + perc, bytes / 1000, max_bytes / 1000, kbps); +#else sprintf (buf, "%d %% (%dk/%dk) %03.1f kB/s", perc, bytes / 1000, max_bytes / 1000, kbps); +#endif if (total_download_bytes > 0) Progress.SetBar2(total_download_bytes_sofar + bytes, total_download_bytes); } else +#ifdef LANG_FR + sprintf (buf, "%d %2.1f ko/s", bytes, kbps); +#else sprintf (buf, "%d %2.1f kB/s", bytes, kbps); +#endif Progress.SetText3(buf); } @@ -231,7 +247,11 @@ get_url_to_file (const string &_url, { const char *err = strerror (errno); if (!err) +#ifdef LANG_FR + err = "(erreur inconnue)"; +#else err = "(unknown error)"; +#endif fatal (owner, IDS_ERR_OPEN_WRITE, _filename.c_str(), err); } diff --git a/ini.cc b/ini.cc index 7d7b917..5e9d078 100644 --- a/ini.cc +++ b/ini.cc @@ -60,7 +60,11 @@ unsigned int setup_timestamp = 0; std::string ini_setup_version; std::string current_ini_sig_name; +#ifdef LANG_FR +static BoolOption NoVerifyOption (false, 'X', "no-verify", "Ne pas vérifier les signatures de setup.ini"); +#else static BoolOption NoVerifyOption (false, 'X', "no-verify", "Don't verify setup.ini signatures"); +#endif extern int yyparse (); /*extern int yydebug;*/ @@ -72,7 +76,11 @@ public: { Progress.SetText2 (""); Progress.SetText3 (""); +#ifndef LANG_FR Progress.SetText4 ("Progress:"); +#else + Progress.SetText4 ("Avancement :"); +#endif } virtual void progress(unsigned long const pos, unsigned long const max) { @@ -96,7 +104,11 @@ public: } virtual void iniName (const std::string& name) { +#ifdef LANG_FR + Progress.SetText1 ("Analyse..."); +#else Progress.SetText1 ("Parsing..."); +#endif Progress.SetText2 (name.c_str()); Progress.SetText3 (""); } @@ -106,15 +118,27 @@ public: } virtual void warning (const std::string& message)const { +#ifdef LANG_FR + mbox (0, message.c_str(), "Attention", 0); +#else mbox (0, message.c_str(), "Warning", 0); +#endif } virtual void error(const std::string& message)const { +#ifdef LANG_FR + mbox (0, message.c_str(), "Erreurs d'analyse", 0); +#else mbox (0, message.c_str(), "Parse Errors", 0); +#endif } virtual ~ GuiParseFeedback () { +#ifdef LANG_FR + Progress.SetText4("Paquet :"); +#else Progress.SetText4("Package:"); +#endif } private: unsigned int lastpct; @@ -333,8 +357,13 @@ do_ini_thread (HINSTANCE h, HWND owner) } } +#ifdef LANG_FR + msg ("la version de l'assistant pour le .ini est %s, notre version est %s", ini_setup_version.size() ? + ini_setup_version.c_str() : "(vide)", +#else msg (".ini setup_version is %s, our setup_version is %s", ini_setup_version.size() ? ini_setup_version.c_str () : "(null)", +#endif setup_version); if (ini_setup_version.size ()) { diff --git a/install.cc b/install.cc index 2162902..517ddd2 100644 --- a/install.cc +++ b/install.cc @@ -73,9 +73,15 @@ static long long int total_bytes = 0; static long long int total_bytes_sofar = 0; static int package_bytes = 0; +#ifdef LANG_FR +static BoolOption NoReplaceOnReboot (false, 'r', "no-replaceonreboot", + "Inhibe le remplacement des fichiers " + "au prochain redémarrage."); +#else static BoolOption NoReplaceOnReboot (false, 'r', "no-replaceonreboot", "Disable replacing in-use files on next " "reboot."); +#endif struct std_dirs_t { const char *name; @@ -156,7 +162,11 @@ static void chksum_one (const packagesource& source); void Installer::preremoveOne (packagemeta & pkg) { +#ifdef LANG_FR + Progress.SetText1 ("Lancement du script de pré-désinstallation..."); +#else Progress.SetText1 ("Running preremove script..."); +#endif Progress.SetText2 (pkg.name.c_str()); Log (LOG_PLAIN) << "Running preremove script for " << pkg.name << endLog; const unsigned numexts = 4; @@ -168,7 +178,11 @@ Installer::preremoveOne (packagemeta & pkg) void Installer::uninstallOne (packagemeta & pkg) { +#ifdef LANG_FR + Progress.SetText1 ("Désinstalle..."); +#else Progress.SetText1 ("Uninstalling..."); +#endif Progress.SetText2 (pkg.name.c_str()); Log (LOG_PLAIN) << "Uninstalling " << pkg.name << endLog; pkg.uninstall (); @@ -208,7 +222,11 @@ LRESULT CALLBACK CBTProc(int nCode, WPARAM wParam, LPARAM lParam) { case HCBT_ACTIVATE: hWnd = (HWND)wParam; if (GetDlgItem(hWnd, IDCANCEL) != NULL) +#ifdef LANG_FR + SetDlgItemText(hWnd, IDCANCEL, "Continuer"); +#else SetDlgItemText(hWnd, IDCANCEL, "Continue"); +#endif UnhookWindowsHookEx(hMsgBoxHook); } return CallNextHookEx(hMsgBoxHook, nCode, wParam, lParam); @@ -372,15 +390,24 @@ Installer::installOne (packagemeta &pkgm, const packageversion &ver, { if (!source.Canonical()) return; +#ifdef LANG_FR + Progress.SetText1 ("Installation"); + Progress.SetText2 (source.Base () ? source.Base () : "(inconnu)"); +#else Progress.SetText1 ("Installing"); Progress.SetText2 (source.Base () ? source.Base () : "(unknown)"); +#endif io_stream *pkgfile = NULL; if (!source.Cached() || !io_stream::exists (source.Cached ()) || !(pkgfile = io_stream::open (source.Cached (), "rb", 0))) { +#ifdef LANG_FR + note (NULL, IDS_ERR_OPEN_READ, source.Cached (), "Fichier inexistant"); +#else note (NULL, IDS_ERR_OPEN_READ, source.Cached (), "No such file"); +#endif ++errors; return; } @@ -424,7 +451,11 @@ Installer::installOne (packagemeta &pkgm, const packageversion &ver, else { note (NULL, IDS_ERR_OPEN_READ, source.Cached (), +#ifdef LANG_FR + "Format tar invalide on non supporté"); +#else "Invalid or unsupported tar format"); +#endif ++errors; } delete try_decompress; @@ -436,7 +467,11 @@ Installer::installOne (packagemeta &pkgm, const packageversion &ver, /* Not a compressed tarball, not a plain tarball, give up. */ delete pkgfile; note (NULL, IDS_ERR_OPEN_READ, source.Cached (), +#ifdef LANG_FR + "Format de fichier non reconnu"); +#else "Unrecognisable file format"); +#endif ++errors; return; } @@ -528,7 +563,11 @@ Installer::installOne (packagemeta &pkgm, const packageversion &ver, // listed processes, or just ignore the problem and schedule the file to be // replaced after a reboot FileInuseDlgData dlg_data; +#ifdef LANG_FR + dlg_data.msg = ("Impossible d'extraire /" + fn).c_str (); +#else dlg_data.msg = ("Unable to extract /" + fn).c_str (); +#endif dlg_data.processlist = plm.c_str (); dlg_data.iteration = iteration; @@ -542,6 +581,15 @@ Installer::installOne (packagemeta &pkgm, const packageversion &ver, // All we can offer the user is a generic "retry or ignore" choice and a chance // to fix the problem themselves char msg[fn.size() + 300]; +#ifdef LANG_FR + sprintf (msg, + "Incapable d'extraire /%s\r\n" + "Le fichier est utilisé ou une autre erreur est survenue.\r\n" + "Arrêtez tous les processus Cygwin et sélectionnez «Recommencer», ou\r\n" + "«Continuer» pour poursuivre (il faudra redémarrer).\r\n", + fn.c_str()); + rc = MessageBox (owner, msg, "Erreur à l'écriture du fichier", +#else sprintf (msg, "Unable to extract /%s\r\n" "The file is in use or some other error occurred.\r\n" @@ -550,6 +598,7 @@ Installer::installOne (packagemeta &pkgm, const packageversion &ver, fn.c_str()); rc = MessageBox (owner, msg, "Error writing file", +#endif MB_RETRYCONTINUE | MB_ICONWARNING | MB_TASKMODAL); } } @@ -609,7 +658,11 @@ Installer::installOne (packagemeta &pkgm, const packageversion &ver, { char msg[fn.size() + 300]; sprintf (msg, +#ifdef LANG_FR + "Impossible d'extraire /%s -- paquet corrompu ?\r\n", +#else "Unable to extract /%s -- corrupt package?\r\n", +#endif fn.c_str()); // XXX: We should offer the option to retry, @@ -620,7 +673,11 @@ Installer::installOne (packagemeta &pkgm, const packageversion &ver, // and ignore all errors is mis-implemented at present // to only apply to errors arising from a single archive, // so we degenerate to the continue option. +#ifdef LANG_FR + MessageBox (owner, msg, "Erreur extraction fichier", +#else MessageBox (owner, msg, "File extraction error", +#endif MB_OK | MB_ICONWARNING | MB_TASKMODAL); } @@ -666,21 +723,38 @@ check_for_old_cygwin (HWND owner) char msg[sizeof (buf) + 132]; sprintf (msg, +#ifdef LANG_FR + "Une ancienne version de cygwin1.dll a été trouvée ici :\r\n%s\r\nEffacer ?", +#else "An old version of cygwin1.dll was found here:\r\n%s\r\nDelete?", +#endif buf); switch (MessageBox +#ifdef LANG_FR + (owner, msg, "Qu'est-ce que ça fait là ?", +#else (owner, msg, "What's that doing there?", +#endif MB_YESNO | MB_ICONQUESTION | MB_TASKMODAL)) { case IDYES: if (!DeleteFile (buf)) { +#ifdef LANG_FR + sprintf (msg, "Impossible de supprimer le fichier %s.\r\n" + "La DLL est peut être utilisée par une autre application ?\r\n" + "Vous devriez effacer la vieille version de cygwin1.dll\r\n" + "dès que possible.", buf); + MessageBox (owner, buf, "Impossible d'effacer le fichier", + MB_OK | MB_ICONEXCLAMATION | MB_TASKMODAL); +#else sprintf (msg, "Couldn't delete file %s.\r\n" "Is the DLL in use by another application?\r\n" "You should delete the old version of cygwin1.dll\r\n" "at your earliest convenience.", buf); MessageBox (owner, buf, "Couldn't delete file", MB_OK | MB_ICONEXCLAMATION | MB_TASKMODAL); +#endif } break; default: @@ -731,7 +805,12 @@ do_install_thread (HINSTANCE h, HWND owner) packagedb db; /* Calculate the amount of data to md5sum */ +#ifdef LANG_FR + Progress.SetText1("Calcul..."); +#else Progress.SetText1("Calculating..."); +#endif + long long int md5sum_total_bytes = 0; for (packagedb::packagecollection::iterator i = db.packages.begin (); i != db.packages.end (); ++i) @@ -854,8 +933,13 @@ do_install_thread (HINSTANCE h, HWND owner) { const char *err = strerror (temperr); if (!err) +#ifdef LANG_FR + err = "(erreur inconnue)"; + fatal (owner, IDS_ERR_OPEN_WRITE, "Base de données des paquets", +#else err = "(unknown error)"; fatal (owner, IDS_ERR_OPEN_WRITE, "Package Database", +#endif err); } @@ -994,9 +1078,15 @@ md5_one (const packagesource& pkgsource) Log (LOG_BABBLE) << "Checking MD5 for " << fullname << endLog; +#ifdef LANG_FR + Progress.SetText1 ((std::string ("Vérification MD5 pour ") + + pkgsource.Base ()).c_str ()); + Progress.SetText4 ("Avancement :"); +#else Progress.SetText1 ((std::string ("Checking MD5 for ") + pkgsource.Base ()).c_str ()); Progress.SetText4 ("Progress:"); +#endif Progress.SetBar1 (0); unsigned char buffer[16384]; diff --git a/localdir.cc b/localdir.cc index 4a7ce2a..abbab09 100644 --- a/localdir.cc +++ b/localdir.cc @@ -46,7 +46,11 @@ #include "threebar.h" extern ThreeBarProgressPage Progress; +#ifdef LANG_FR +static StringOption LocalDirOption ("", 'l', "local-package-dir", "Dossier local pour les paquets", false); +#else static StringOption LocalDirOption ("", 'l', "local-package-dir", "Local package directory", false); +#endif static ControlAdjuster::ControlInfo LocaldirControlsInfo[] = { { IDC_LOCALDIR_GRP, CP_STRETCH, CP_TOP }, diff --git a/main.cc b/main.cc index e968d93..f972be9 100644 --- a/main.cc +++ b/main.cc @@ -91,12 +91,21 @@ using namespace std; HINSTANCE hinstance; +#ifdef LANG_FR +static StringOption Arch ("", 'a', "arch", "Architecture à installer (x86_64 ou x86)", false); +static BoolOption UnattendedOption (false, 'q', "quiet-mode", "Assistant sans messages"); +static BoolOption PackageManagerOption (false, 'M', "package-manager", "Mode assistant sélection seulement"); +static BoolOption NoAdminOption (false, 'B', "no-admin", "Ne pas vérifier et forcer à installer en tant qu'administrateur"); +static BoolOption WaitOption (false, 'W', "wait", "Attendre le process fils en mode élévation"); +static BoolOption HelpOption (false, 'h', "help", "Affiche l'aide"); +#else static StringOption Arch ("", 'a', "arch", "architecture to install (x86_64 or x86)", false); static BoolOption UnattendedOption (false, 'q', "quiet-mode", "Unattended setup mode"); static BoolOption PackageManagerOption (false, 'M', "package-manager", "Semi-attended chooser-only mode"); static BoolOption NoAdminOption (false, 'B', "no-admin", "Do not check for and enforce running as Administrator"); static BoolOption WaitOption (false, 'W', "wait", "When elevating, wait for elevated child process"); static BoolOption HelpOption (false, 'h', "help", "print help"); +#endif static void inline set_cout () @@ -215,6 +224,10 @@ WinMain (HINSTANCE h, snprintf(locale, sizeof locale, ".%u", GetACP()); setlocale(LC_ALL, locale); +#ifdef LANG_FR /* A Bit ugly but to be debugged wrt to above 2 lines */ + SetThreadLocale(MAKELCID(MAKELANGID(LANG_FRENCH,SUBLANG_FRENCH),SORT_DEFAULT)); +#endif + char **_argv; int argc; for (argc = 0, _argv = __argv; *_argv; _argv++) @@ -249,10 +262,17 @@ WinMain (HINSTANCE h, else { char buff[80 + ((string) Arch).size ()]; +#ifdef LANG_FR + sprintf (buff, "Option invalide pour --arch : « %s »", + ((string) Arch).c_str ()); + fprintf (stderr, "*** %s\n", buff); + MessageBox (NULL, buff, "Option invalide", MB_ICONEXCLAMATION | MB_OK); +#else sprintf (buff, "Invalid option for --arch: \"%s\"", ((string) Arch).c_str ()); fprintf (stderr, "*** %s\n", buff); MessageBox (NULL, buff, "Invalid option", MB_ICONEXCLAMATION | MB_OK); +#endif exit (1); } diff --git a/msg.cc b/msg.cc index d0cbfa2..2fbdbf6 100644 --- a/msg.cc +++ b/msg.cc @@ -70,7 +70,11 @@ mbox (HWND owner, const char *buf, const char *name, int type) return 0; } } +#ifdef LANG_FR + return MessageBox (owner, buf, "Assistant Cygwin", type); +#else return MessageBox (owner, buf, "Cygwin Setup", type); +#endif } static int diff --git a/net.cc b/net.cc index 1402c67..a099462 100644 --- a/net.cc +++ b/net.cc @@ -40,7 +40,11 @@ static const char *cvsid = #include "ConnectionSetting.h" extern ThreeBarProgressPage Progress; +#ifdef LANG_FR +static StringOption ProxyOption ("", 'p', "proxy", "Proxy HTTP/FTP (serveur:port)", false); +#else static StringOption ProxyOption ("", 'p', "proxy", "HTTP/FTP proxy (host:port)", false); +#endif static int rb[] = { IDC_NET_IE5, IDC_NET_DIRECT, IDC_NET_PROXY, 0 }; static bool doing_loading = false; diff --git a/nio-file.cc b/nio-file.cc index efdf40d..567fac4 100644 --- a/nio-file.cc +++ b/nio-file.cc @@ -44,7 +44,11 @@ NetIO (Purl) { const char *err = strerror (errno); if (!err) +#ifdef LANG_FR + err = "(erreur inconnue)"; +#else err = "(unknown error)"; +#endif note (NULL, IDS_ERR_OPEN_READ, path, err); } } diff --git a/nio-ie5.cc b/nio-ie5.cc index 11134ee..a3230f1 100644 --- a/nio-ie5.cc +++ b/nio-ie5.cc @@ -91,7 +91,11 @@ try_again: char buf[2000]; DWORD e, l = sizeof (buf); InternetGetLastResponseInfo (&e, buf, &l); +#ifndef LANG_FR MessageBox (0, buf, "Internet Error", 0); +#else + MessageBox (0, buf, "Erreur Internet", 0); +#endif } } diff --git a/package_message.h b/package_message.h index 7ff7d15..b11982c 100644 --- a/package_message.h +++ b/package_message.h @@ -33,7 +33,12 @@ public: { if (unattended_mode || !id.length () || UserSettings::instance().get (id.c_str ())) /* No message or already seen */; + +#ifdef LANG_FR + else if (MessageBox (NULL, message.c_str (), "Alerte Assistant Cygwin", +#else else if (MessageBox (NULL, message.c_str (), "Setup Alert", +#endif MB_OKCANCEL | MB_ICONSTOP | MB_SETFOREGROUND | MB_TOPMOST) != IDCANCEL) UserSettings::instance().set (id.c_str (), "1"); diff --git a/package_meta.cc b/package_meta.cc index c2e94eb..1700d1f 100644 --- a/package_meta.cc +++ b/package_meta.cc @@ -51,10 +51,17 @@ using namespace std; using namespace std; +#ifdef LANG_FR +static StringArrayOption DeletePackageOption ('x', "remove-packages", "Spécifie les paquests à désinstaller"); +static StringArrayOption DeleteCategoryOption ('c', "remove-categories", "Spécifie les catégories à désinstaller"); +static StringArrayOption PackageOption ('P', "packages", "Spécifie les paquets à installer"); +static StringArrayOption CategoryOption ('C', "categories", "Spécifie les categories à installer"); +#else static StringArrayOption DeletePackageOption ('x', "remove-packages", "Specify packages to uninstall"); static StringArrayOption DeleteCategoryOption ('c', "remove-categories", "Specify categories to uninstall"); static StringArrayOption PackageOption ('P', "packages", "Specify packages to install"); static StringArrayOption CategoryOption ('C', "categories", "Specify entire categories to install"); +#endif bool hasManualSelections = 0; /*****************/ @@ -78,13 +85,29 @@ packagemeta::_actions::caption () switch (_value) { case 0: +#ifndef LANG_FR return "Default"; +#else + return "Défaut"; +#endif case 1: +#ifndef LANG_FR return "Install"; +#else + return "Installe"; +#endif case 2: +#ifndef LANG_FR return "Reinstall"; +#else + return "Réinstalle"; +#endif case 3: +#ifndef LANG_FR return "Uninstall"; +#else + return "Désinstalle"; +#endif } // Pacify GCC: (all case options are checked above) return 0; @@ -388,16 +411,32 @@ std::string packagemeta::action_caption () const { if (!desired && installed) +#ifdef LANG_FR + return "Désinstalle"; +#else return "Uninstall"; +#endif else if (!desired) +#ifdef LANG_FR + return "Passe"; +#else return "Skip"; +#endif else if (desired == installed && desired.picked()) +#ifdef LANG_FR + return packagedb::task == PackageDB_Install ? "Réinstalle" : "Récupère"; +#else return packagedb::task == PackageDB_Install ? "Reinstall" : "Retrieve"; +#endif else if (desired == installed && desired.sourcePackage() && desired.sourcePackage().picked()) /* FIXME: Redo source should come up if the tarball is already present locally */ return "Source"; else if (desired == installed) /* and neither src nor bin */ +#ifdef LANG_FR + return "Garde"; +#else return "Keep"; +#endif else return desired.Canonical_version (); } diff --git a/postinstall.cc b/postinstall.cc index 1843450..ff2ef63 100644 --- a/postinstall.cc +++ b/postinstall.cc @@ -152,7 +152,11 @@ private: static std::string do_postinstall_thread (HINSTANCE h, HWND owner) { +#ifndef LANG_FR Progress.SetText1 ("Running..."); +#else + Progress.SetText1 ("Exécution ..."); +#endif Progress.SetText2 (""); Progress.SetText3 (""); Progress.SetBar1 (0, 1); diff --git a/prereq.cc b/prereq.cc index c766055..605e116 100644 --- a/prereq.cc +++ b/prereq.cc @@ -98,11 +98,19 @@ PrereqPage::OnNext () { // breakage imminent! danger, danger int res = MessageBox (h, +#ifdef LANG_FR + "Les paquets suivants sont requis en dépendance des paquets à installer. " + "Nous vous recommandons de laisser l'assistant les installer" + "\r\n\r\n" + "Voulez vous continuer ? ", + "ATTENTION - Paquets nécessaires non sélectionnés", +#else "The listed packages are required for packages depending on them to " "work. We strongly recommend that you allow Setup to select them." "\r\n\r\n" "Are you sure you want to proceed without these packages?", "WARNING - Required Packages Not Selected", +#endif MB_YESNO | MB_ICONEXCLAMATION | MB_DEFBUTTON2); if (res == IDNO) return -1; @@ -173,7 +181,11 @@ PrereqChecker::isMet () { packagedb db; +#ifdef LANG_FR + Progress.SetText1 ("Vérification des dépendances..."); +#else Progress.SetText1 ("Checking prerequisites..."); +#endif Progress.SetText2 (""); Progress.SetText3 (""); @@ -251,7 +263,11 @@ PrereqChecker::getUnmetString (std::string &s) s = s + i->first->name + "\t(" + i->first->trustp (false, theTrust).Canonical_version () + ")\r\n\t" + i->first->SDesc () +#ifdef LANG_FR + + "\r\n\tRequis par : "; +#else + "\r\n\tRequired by: "; +#endif for (unsigned int j = 0; j < i->second.size(); j++) { s += i->second[j]->name; diff --git a/propsheet.cc b/propsheet.cc index 976aefb..9a1b33b 100644 --- a/propsheet.cc +++ b/propsheet.cc @@ -178,8 +178,13 @@ static LRESULT CALLBACK PropSheetWndProc (HWND hwnd, UINT uMsg, break; areyousure: if (MessageBox(hwnd, +#ifdef LANG_FR + "Voulez-vous vraiment quitter l'assistant ? Les téléchargements ou installations en cours seront annulés.", + "Quitter l'assistant Cygwin ?", MB_YESNO) == IDNO) +#else "Are you sure you want to exit setup? Any current download or installation will be aborted.", "Exit Cygwin Setup?", MB_YESNO) == IDNO) +#endif return 0; break; case WM_SIZE: diff --git a/res.rc b/res.rc index 9339b53..7551028 100644 --- a/res.rc +++ b/res.rc @@ -11,6 +11,12 @@ #define SETUP_HEADICON_X (SETUP_STANDARD_DIALOG_W - 27) +#ifndef LANG_FR +///////////////////////////////////////////////////////////////////////////// +// +// English (en_US) resources +// + LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US ///////////////////////////////////////////////////////////////////////////// @@ -450,17 +456,6 @@ END ///////////////////////////////////////////////////////////////////////////// // -// Manifest -// - -#ifdef __x86_64__ -CREATEPROCESS_MANIFEST_RESOURCE_ID RT_MANIFEST "setup64.exe.manifest" -#else -CREATEPROCESS_MANIFEST_RESOURCE_ID RT_MANIFEST "setup.exe.manifest" -#endif - -///////////////////////////////////////////////////////////////////////////// -// // Icon // @@ -564,3 +559,551 @@ BEGIN "will be nothing to install.\n\nPress OK if that's what you wanted\nor Cancel to choose a different directory." IDS_ELEVATED "Hand installation over to elevated child process." END + +#else + +///////////////////////////////////////////////////////////////////////////// +// +// French (fr_FR) resources +// + +LANGUAGE LANG_FRENCH, SUBLANG_FRENCH +#pragma code_page(1252) + +///////////////////////////////////////////////////////////////////////////// +// +// Dialog +// + +IDD_SOURCE DIALOG DISCARDABLE 0, 0, SETUP_STANDARD_DIALOG_DIMS +STYLE DS_MODALFRAME | DS_CENTER | WS_CHILD | WS_CAPTION | WS_SYSMENU +CAPTION "Assistant Cygwin - Choisissez le type d'installation" +FONT 8, "MS Shell Dlg" +BEGIN + CONTROL "&Installer depuis Internet\n(les fichiers téléchargés seront gardés pour une réutilisation ultérieure)", + IDC_SOURCE_NETINST, "Button", + BS_AUTORADIOBUTTON | WS_GROUP | WS_TABSTOP | BS_MULTILINE + | BS_TOP, + 71, 60, 200, 30 + CONTROL "&Télécharger sans installer", + IDC_SOURCE_DOWNLOAD, "Button", + BS_AUTORADIOBUTTON | WS_TABSTOP, + 71, 90, 200, 10 + CONTROL "Installer depuis un dossier &local",IDC_SOURCE_LOCALDIR,"Button", + BS_AUTORADIOBUTTON | WS_TABSTOP, + 71,120,200,10 + ICON IDI_CYGWIN, IDC_HEADICON, SETUP_HEADICON_X, 0, 21, 20 + CONTROL "", IDC_HEADSEPARATOR, "Static", SS_BLACKFRAME | SS_SUNKEN, + 0, 28, SETUP_STANDARD_DIALOG_W, 1 + LTEXT "Choisissez la source du téléchargement",IDC_STATIC_HEADER_TITLE, + 7, 0, 258, 8, NOT WS_GROUP + LTEXT "Choisissez si vous installez ou téléchargez depuis Internet, ou installez des fichiers depuis un dossier local.", + IDC_SOURCE_SUBTEXT, + 21, 9, 239, 16, NOT WS_GROUP +END + +IDD_VIRUS DIALOG DISCARDABLE 0, 0, SETUP_STANDARD_DIALOG_DIMS +STYLE DS_MODALFRAME | DS_CENTER | WS_CHILD | WS_CAPTION | WS_SYSMENU +CAPTION "Assistant Cygwin - Inhiber l'Anti-Virus ?" +FONT 8, "MS Shell Dlg" +BEGIN + CONTROL "&Inhiber l'anti-virus",IDC_DISABLE_AV,"Button", + BS_AUTORADIOBUTTON | WS_GROUP | WS_TABSTOP,101,69,115,10 + CONTROL "&Laisser l'anti-virus tranquille",IDC_LEAVE_AV,"Button", + BS_AUTORADIOBUTTON | WS_TABSTOP,101,84,115,10 + ICON IDI_CYGWIN,IDC_HEADICON,SETUP_HEADICON_X,0,21,20 + CONTROL "",IDC_HEADSEPARATOR,"Static",SS_BLACKFRAME | SS_SUNKEN,0,28, + SETUP_STANDARD_DIALOG_W,1 + LTEXT "Choisissez si vous inhibez votre anti-virus pendant l'installation.",IDC_STATIC_HEADER_TITLE,7,0, + 258,8,NOT WS_GROUP + LTEXT "Certains anti-virus, notamment McAfee, génèrent un écran bleu sur Windows XP lors de l'installation de Cygwin.", + IDC_STATIC,21,9,239,16,NOT WS_GROUP + LTEXT "Un anti-virus problématique a été détecté. L'assistant Cygwin peut l'inhiber pendant le processus d'installation, et le revalider à la fin de l'installation.", + IDC_STATIC,21,32,239,24,NOT WS_GROUP +END + +IDD_LOCAL_DIR DIALOG DISCARDABLE 0, 0, SETUP_STANDARD_DIALOG_DIMS +STYLE DS_MODALFRAME | DS_CENTER | WS_CHILD | WS_CAPTION | WS_SYSMENU +CAPTION "Assistant Cygwin - Sélection du dossier local des paquets" +FONT 8, "MS Shell Dlg" +BEGIN + LTEXT "Sélection du dossier local des paquets",IDC_STATIC_HEADER_TITLE, + 7,0,258,8,NOT WS_GROUP + LTEXT "",IDC_LOCAL_DIR_DESC,21,9,248,16,NOT WS_GROUP + ICON IDI_CYGWIN,IDC_HEADICON,SETUP_HEADICON_X,0,21,20 + CONTROL "",IDC_HEADSEPARATOR,"Static",SS_BLACKFRAME | SS_SUNKEN,0,28, + SETUP_STANDARD_DIALOG_W,1 + GROUPBOX "Dossier local des paquets",IDC_LOCALDIR_GRP,5,35,330,35 + EDITTEXT IDC_LOCAL_DIR,13,47,270,14,ES_AUTOHSCROLL | WS_TABSTOP + PUSHBUTTON "Par&courir...",IDC_LOCAL_DIR_BROWSE,285,47,44,14,WS_TABSTOP +END + +IDD_ROOT DIALOG DISCARDABLE 0, 0, SETUP_STANDARD_DIALOG_DIMS +STYLE DS_MODALFRAME | DS_CENTER | WS_CHILD | WS_CAPTION | WS_SYSMENU +CAPTION "Assistant Cygwin - Choix du dossier d'installation" +FONT 8, "MS Shell Dlg" +BEGIN + LTEXT "Sélection du dossier racine", IDC_STATIC_HEADER_TITLE, + 7,0,258,8,NOT WS_GROUP + LTEXT "Sélectionnez le dossier où installer Cygwin. " + "Choisissez également des paramètres d'installation.", + IDC_ROOTDIR_SUBTEXT,21,9,239,16,NOT WS_GROUP + ICON IDI_CYGWIN,IDC_HEADICON,SETUP_HEADICON_X,0,21,20 + CONTROL "",IDC_HEADSEPARATOR,"Static",SS_BLACKFRAME | SS_SUNKEN,0,28, + SETUP_STANDARD_DIALOG_W,1 + + GROUPBOX "Dossier racine", IDC_ROOTDIR_GRP,5,35,305,35 + EDITTEXT IDC_ROOT_DIR,15,47,245,14,ES_AUTOHSCROLL | WS_TABSTOP + PUSHBUTTON "Pa&rcourir...",IDC_ROOT_BROWSE,262,48,44,14,WS_TABSTOP + + GROUPBOX "Installer pour",IDC_INSTALLFOR_GRP,5,76,330,101 + CONTROL "&Tout le monde (RECOMMANDÉ)",IDC_ROOT_SYSTEM,"Button", + BS_AUTORADIOBUTTON | WS_TABSTOP | WS_GROUP,13,89,130,8 + CONTROL "Juste &Moi",IDC_ROOT_USER,"Button",BS_AUTORADIOBUTTON | + WS_TABSTOP,13,130,130,8 + LTEXT "Cygwin sera disponible pour tous les utilisateurs", + IDC_ALLUSERS_TEXT,25,101,300,28 + LTEXT "Cygwin sera disponible pour tous les utilisateurs " + "mais les icones et les menus uniquement pour l'utilisateur " + "en cours. Ne sélectionner que si vous n'avez pas les droits " + "administrateur ou en cas de besoin spécifique.", + IDC_JUSTME_TEXT,25,140,300,32 +END + +IDD_SITE DIALOG DISCARDABLE 0, 0, SETUP_STANDARD_DIALOG_DIMS +STYLE DS_MODALFRAME | DS_3DLOOK | DS_CENTER | WS_CHILD | WS_VISIBLE | + WS_CAPTION | WS_SYSMENU +EXSTYLE WS_EX_CONTROLPARENT +CAPTION "Assistant Cygwin - Choix site(s) de téléchargement" +FONT 8, "MS Shell Dlg" +BEGIN + ICON IDI_CYGWIN,IDC_HEADICON,SETUP_HEADICON_X,0,21,20 + LISTBOX IDC_URL_LIST,66,45,185,110,LBS_NOINTEGRALHEIGHT | + LBS_EXTENDEDSEL | WS_VSCROLL | WS_HSCROLL | WS_GROUP | + WS_TABSTOP + LTEXT "Sites disponibles :",IDC_STATIC,66,34,183,8,NOT + WS_GROUP + CONTROL "",IDC_HEADSEPARATOR,"Static",SS_BLACKFRAME | SS_SUNKEN,0,28, + SETUP_STANDARD_DIALOG_W,1 + LTEXT "Choisissez un site dans cette liste, ou ajoutez vos propres sites à la liste.", + IDC_STATIC,21,9,239,16,NOT WS_GROUP + LTEXT "Choisissez un site de téléchargement",IDC_STATIC_HEADER_TITLE,7,0,258, + 8,NOT WS_GROUP + EDITTEXT IDC_EDIT_USER_URL,65,160,185,14,ES_AUTOHSCROLL | WS_GROUP + LTEXT "URL perso :",IDC_SITE_USERURL,15,162,45,8,NOT WS_GROUP + PUSHBUTTON "Ajouter",IDC_BUTTON_ADD_URL,255,160,50,14 +END + +IDD_NET DIALOG DISCARDABLE 0, 0, SETUP_STANDARD_DIALOG_DIMS +STYLE DS_MODALFRAME | DS_CENTER | WS_CHILD | WS_CAPTION | WS_SYSMENU +CAPTION "Assistant Cygwin - Sélection du type de connexion" +FONT 8, "MS Shell Dlg" +BEGIN + CONTROL "Connexion &directe",IDC_NET_DIRECT,"Button", + BS_AUTORADIOBUTTON | WS_GROUP | WS_TABSTOP,60,55,73,10 + CONTROL "Utiliser les paramètres &IE",IDC_NET_IE5,"Button", + BS_AUTORADIOBUTTON | WS_TABSTOP,60,70,106,10 + CONTROL "Utiliser le &proxy HTTP/FTP :",IDC_NET_PROXY,"Button", + BS_AUTORADIOBUTTON | WS_TABSTOP,60,85,112,10 + EDITTEXT IDC_PROXY_HOST,120,105,120,12,ES_AUTOHSCROLL | + WS_DISABLED | WS_GROUP + EDITTEXT IDC_PROXY_PORT,120,125,30,12,ES_AUTOHSCROLL | + WS_DISABLED + GROUPBOX "",IDC_STATIC,60,95,185,50 + RTEXT "&Serveur proxy",IDC_STATIC,65,105,50,12,SS_CENTERIMAGE | + NOT WS_GROUP + RTEXT "Por&t",IDC_STATIC,85,125,30,12,SS_CENTERIMAGE | NOT + WS_GROUP + ICON IDI_CYGWIN,IDC_HEADICON,SETUP_HEADICON_X,0,21,20 + CONTROL "",IDC_HEADSEPARATOR,"Static",SS_BLACKFRAME | SS_SUNKEN,0,28, + SETUP_STANDARD_DIALOG_W,1 + LTEXT "L'assistant a besoin de savoir comment vous désirez le connecter à Internet. Choisissez un paramètre approprié ci-dessous.", + IDC_STATIC,21,9,239,16,NOT WS_GROUP + LTEXT "Sélectionnez votre connexion Internet", + IDC_STATIC_HEADER_TITLE,7,0,258,8,NOT WS_GROUP +END + +IDD_INSTATUS DIALOG DISCARDABLE 0, 0, SETUP_STANDARD_DIALOG_DIMS +STYLE DS_MODALFRAME | DS_CENTER | WS_CHILD | WS_VISIBLE | WS_CAPTION | WS_SYSMENU +CAPTION "Assistant Cygwin" +FONT 8, "MS Shell Dlg" +BEGIN + LTEXT "Installation...",IDC_INS_ACTION,45,55,205,8,SS_ENDELLIPSIS + LTEXT "(PAQUET)",IDC_INS_PKG,45,70,205,8,SS_ENDELLIPSIS + LTEXT "(FICHIER)",IDC_INS_FILE,45,85,205,10,SS_ENDELLIPSIS + CONTROL "Progress1",IDC_INS_DISKFULL,"msctls_progress32", + PBS_SMOOTH | WS_BORDER,95,130,155,10 + CONTROL "Progress1",IDC_INS_IPROGRESS,"msctls_progress32", + PBS_SMOOTH | WS_BORDER,95,115,155,10 + CONTROL "Progress1",IDC_INS_PPROGRESS,"msctls_progress32", + PBS_SMOOTH | WS_BORDER,95,100,155,10 + LTEXT "Paquet :",IDC_INS_BL_PACKAGE,45,100,50,8,NOT WS_GROUP + LTEXT "Total  :",IDC_INS_BL_TOTAL,45,115,50,8,NOT WS_GROUP + LTEXT "Disque :",IDC_INS_BL_DISK,45,130,50,8,NOT WS_GROUP + ICON IDI_CYGWIN,IDC_HEADICON,SETUP_HEADICON_X,0,21,20 + CONTROL "",IDC_HEADSEPARATOR,"Static",SS_BLACKFRAME | SS_SUNKEN,0,28, + SETUP_STANDARD_DIALOG_W,1 + LTEXT "Cette page affiche l'avancement du téléchargement ou de l'installation.", + IDC_STATIC,21,9,239,16,NOT WS_GROUP + LTEXT "Avancement",IDC_STATIC_HEADER_TITLE,7,0,258,8,NOT WS_GROUP +END + +IDD_PROXY_AUTH DIALOG DISCARDABLE 0, 0, 215, 95 +STYLE DS_MODALFRAME | DS_CENTER | WS_POPUP | WS_CAPTION | WS_SYSMENU +CAPTION "Authentification proxy requise" +FONT 8, "MS Shell Dlg" +BEGIN + ICON IDI_CYGWIN,IDC_HEADICON,5,5,21,20 + LTEXT "ID &Utilisateur",IDC_STATIC,5,28,55,15,SS_CENTERIMAGE, + WS_EX_RIGHT + EDITTEXT IDC_NET_USER,65,28,145,12,ES_AUTOHSCROLL + LTEXT "&Mot de passe",IDC_STATIC,10,43,50,15,SS_CENTERIMAGE, + WS_EX_RIGHT + EDITTEXT IDC_NET_PASSWD,65,43,145,12,ES_PASSWORD | ES_AUTOHSCROLL + LTEXT "Authentification proxy requise",IDC_STATIC,65,10,145,10 + DEFPUSHBUTTON "&OK",IDOK,100,75,45,15,WS_DISABLED + PUSHBUTTON "Annule",IDCANCEL,165,75,45,15 +END + +IDD_NET_AUTH DIALOG DISCARDABLE 0, 0, 215, 95 +STYLE DS_MODALFRAME | DS_CENTER | WS_POPUP | WS_CAPTION | WS_SYSMENU +CAPTION "Authentification serveur requise" +FONT 8, "MS Shell Dlg" +BEGIN + ICON IDI_CYGWIN,IDC_HEADICON,5,5,21,20 + LTEXT "&Identifiant",IDC_STATIC,5,28,55,15,SS_CENTERIMAGE, + WS_EX_RIGHT + EDITTEXT IDC_NET_USER,65,28,145,12,ES_AUTOHSCROLL + LTEXT "&Mot de passe",IDC_STATIC,10,43,50,15,SS_CENTERIMAGE, + WS_EX_RIGHT + EDITTEXT IDC_NET_PASSWD,65,43,145,12,ES_PASSWORD | ES_AUTOHSCROLL + LTEXT "Authentification serveur requise",IDC_STATIC,65,10,145,10 + DEFPUSHBUTTON "&OK",IDOK,100,75,45,15,WS_DISABLED + PUSHBUTTON "Annule",IDCANCEL,165,75,45,15 +END + +IDD_SPLASH DIALOG DISCARDABLE 0, 0, SETUP_STANDARD_DIALOG_DIMS +STYLE DS_MODALFRAME | DS_3DLOOK | DS_CENTER | WS_CHILD | WS_VISIBLE | + WS_CAPTION | WS_SYSMENU +CAPTION "Assistant Cygwin" +FONT 8, "MS Shell Dlg" +BEGIN +// CONTROL "",IDC_STATIC,"Static",SS_WHITERECT,0,0,95,178 + LTEXT "Programme Assistant Cygwin-FR", + IDC_STATIC_WELCOME_TITLE,115,1,195,24 + LTEXT "Cet assistant est utilisé pour l'installation initiale " + "de l'environnement Cygwin ainsi que pour ses mises à jour." + " Pensez à vous rappeler où vous l'avez enregistré.\r\n\r\n" + "Les pages suivantes vont vous guider durant l'installation. " + "Notez que Cygwin inclus un grand nombre de paquets " + "destinés à de multiples usages. Nous ne pourrons installer " + "par défaut qu'un jeu de paquets de base. Vous pourrez toujours " + "redémarrer ce programme ultérieurement pour ajouter, enlever ou " + "mettre à jour des paquets.",IDC_SPLASH_TEXT,115,25,195,85 + ICON IDI_CYGWIN,IDC_SPLASH_ICON,4,6,0,0,SS_ICON | SS_REALSIZEIMAGE + LTEXT "Version (inconnue)",IDC_VERSION,115,117,195,10 + LTEXT "Copyright 2000-2015",IDC_SPLASH_COPYR,115,130,195,8 + LTEXT "http://www.cygwin.com/",IDC_SPLASH_URL,115,142,90,8 + LTEXT "Version française ®2004-2015 E. Lassauge ",IDC_SPLASH_FR_COPYR,115,154,195,8 + LTEXT "http://lassauge.free.fr/cygwin/",IDC_SPLASH_FR_URL,115,166,195,8 +END + +IDD_DESKTOP DIALOG DISCARDABLE 0, 0, SETUP_STANDARD_DIALOG_DIMS +STYLE DS_MODALFRAME | DS_3DLOOK | DS_CENTER | WS_CHILD | WS_VISIBLE | + WS_CAPTION | WS_SYSMENU +CAPTION "Assistant Cygwin - État de l'installation et création des icônes" +FONT 8, "MS Shell Dlg" +BEGIN + CONTROL "Créer une icône sur le &bureau",IDC_ROOT_DESKTOP,"Button", + BS_AUTOCHECKBOX,108,78,110,8 + CONTROL "Ajouter une icône au menu &Démarrer",IDC_ROOT_MENU,"Button", + BS_AUTOCHECKBOX,108,93,140,8 + ICON IDI_CYGWIN,IDC_HEADICON,SETUP_HEADICON_X,0,21,20 + CONTROL "",IDC_HEADSEPARATOR,"Static",SS_BLACKFRAME | SS_SUNKEN,0,28, + SETUP_STANDARD_DIALOG_W,1 + LTEXT "Indiquez à l'assistant si vous voulez créer des icônes pour un accès aisé à Cygwin.", + IDC_STATIC,21,9,239,16,NOT WS_GROUP + LTEXT "Création des icônes",IDC_STATIC_HEADER_TITLE,7,0,258,8,NOT + WS_GROUP + CONTROL "",IDC_DESKTOP_SEPARATOR,"Static",SS_BLACKFRAME | SS_SUNKEN, + 0,155,SETUP_STANDARD_DIALOG_W,1 + LTEXT "État de l'installation",IDC_STATUS_HEADER,7,160,258,8,NOT WS_GROUP + LTEXT "Installation de Cygwin terminée avec succès.",IDC_STATUS, + 21,169,239,16,NOT WS_GROUP +END + +IDD_FTP_AUTH DIALOG DISCARDABLE 0, 0, 215, 95 +STYLE DS_MODALFRAME | DS_CENTER | WS_POPUP | WS_CAPTION | WS_SYSMENU +CAPTION "Authentification FTP requise" +FONT 8, "MS Shell Dlg" +BEGIN + ICON IDI_CYGWIN,IDC_HEADICON,5,5,21,20 + LTEXT "ID &Utilisateur",IDC_STATIC,5,28,55,15,SS_CENTERIMAGE, + WS_EX_RIGHT + EDITTEXT IDC_NET_USER,65,28,145,12,ES_AUTOHSCROLL + LTEXT "&Mot de passe",IDC_STATIC,10,43,50,15,SS_CENTERIMAGE, + WS_EX_RIGHT + EDITTEXT IDC_NET_PASSWD,65,43,145,12,ES_PASSWORD | ES_AUTOHSCROLL + LTEXT "Authentification FTP requise",IDC_STATIC,65,10,145,10 + DEFPUSHBUTTON "&OK",IDOK,100,75,45,15,WS_DISABLED + PUSHBUTTON "Annule",IDCANCEL,165,75,45,15 +END + +// Width for Keep/Prev/Curr/Exp buttons. +#define SETUP_KPCE_W (30) + +// Right-aligned controls. +#define SETUP_VIEWCAP_W (40) +#define SETUP_VIEWCAP_X (SETUP_STANDARD_DIALOG_W - SETUP_VIEWCAP_W - 7) +#define SETUP_VIEW_W (26) +#define SETUP_VIEW_X (SETUP_VIEWCAP_X - SETUP_VIEW_W - 5) +#define SETUP_EXP_X (SETUP_VIEW_X - SETUP_KPCE_W - 5) +#define SETUP_CURR_X (SETUP_EXP_X - SETUP_KPCE_W - 5) +#define SETUP_KEEP_X (SETUP_CURR_X - SETUP_KPCE_W - 5) + +// Left-aligned controls. +#define SETUP_SEARCH_X (0) +#define SETUP_SEARCH_W (32) +#define SETUP_SEARCHTEXT_X (SETUP_SEARCH_X + SETUP_SEARCH_W + 2) +#define SETUP_SEARCHTEXT_W (60) +#define SETUP_CLEAR_X (SETUP_SEARCHTEXT_X + SETUP_SEARCHTEXT_W + 2) +#define SETUP_CLEAR_W (32) + +IDD_CHOOSE DIALOG DISCARDABLE 0, 0, SETUP_STANDARD_DIALOG_DIMS +STYLE DS_MODALFRAME | DS_3DLOOK | WS_CHILD | WS_VISIBLE | WS_CAPTION | + WS_SYSMENU +CAPTION "Assistant Cygwin - Sélection des paquets" +FONT 8, "MS Shell Dlg" +BEGIN + RTEXT "&Chercher", IDC_STATIC, SETUP_SEARCH_X, 30, SETUP_SEARCH_W, + 12, SS_CENTERIMAGE, WS_EX_RIGHT + EDITTEXT IDC_CHOOSE_SEARCH_EDIT, SETUP_SEARCHTEXT_X, 30, + SETUP_SEARCHTEXT_W, 12 + PUSHBUTTON "&Efface", IDC_CHOOSE_CLEAR_SEARCH, SETUP_CLEAR_X, 30, + SETUP_CLEAR_W, 12 + CONTROL "&Garde",IDC_CHOOSE_KEEP,"Button",BS_AUTORADIOBUTTON | + WS_GROUP | WS_TABSTOP, SETUP_KEEP_X, 30, SETUP_KPCE_W, 14 + CONTROL "&Actu.", IDC_CHOOSE_CURR, "Button", BS_AUTORADIOBUTTON, + SETUP_CURR_X, 30, SETUP_KPCE_W, 14 + CONTROL "E&xp.", IDC_CHOOSE_EXP, "Button", BS_AUTORADIOBUTTON, + SETUP_EXP_X, 30, SETUP_KPCE_W, 14 + PUSHBUTTON "&Voir", IDC_CHOOSE_VIEW, SETUP_VIEW_X, 30, SETUP_VIEW_W, + 14, WS_GROUP + CONTROL "", IDC_HEADSEPARATOR, "Static", SS_BLACKFRAME | SS_SUNKEN, + 0, 28, SETUP_STANDARD_DIALOG_W, 1 + CONTROL "", IDC_LISTVIEW_POS, "Static", SS_BLACKFRAME | NOT + WS_VISIBLE, 7, 45, SETUP_STANDARD_DIALOG_W - 14, 122 + CONTROL "&Cache les paquets obsolètes", IDC_CHOOSE_HIDE, + "Button", BS_AUTOCHECKBOX | WS_TABSTOP, 7, 167, 160, 14 + ICON IDI_CYGWIN, IDC_HEADICON, SETUP_HEADICON_X, 0, 21, 20 + LTEXT "Sélectionnez les paquets que vous voulez installer.", + IDC_CHOOSE_INST_TEXT, 21, 9, 239, 16, NOT WS_GROUP + LTEXT "Sélection des paquets",IDC_STATIC_HEADER_TITLE,7,0,258,8, + NOT WS_GROUP + LTEXT "", IDC_CHOOSE_VIEWCAPTION, SETUP_VIEWCAP_X, 33, SETUP_VIEWCAP_W, 10 +END + +IDD_PREREQ DIALOG DISCARDABLE 0, 0, SETUP_STANDARD_DIALOG_DIMS +STYLE DS_MODALFRAME | DS_3DLOOK | WS_CHILD | WS_VISIBLE | WS_CAPTION | + WS_SYSMENU +CAPTION "Assistant Cygwin - Résolution des dépendances" +FONT 8, "MS Shell Dlg" +BEGIN + CONTROL "",IDC_HEADSEPARATOR,"Static",SS_BLACKFRAME | SS_SUNKEN, + 0,28,SETUP_STANDARD_DIALOG_W,1 + ICON IDI_CYGWIN,IDC_HEADICON,SETUP_HEADICON_X,0,21,20 + LTEXT "Dépendances non résolues",IDC_STATIC_HEADER_TITLE + ,7,0,258,8,NOT WS_GROUP + LTEXT "Les paquets suivants sont requis mais non sélectionnés" + ,IDC_STATIC,21,9,239,16,NOT WS_GROUP + CONTROL "&Installer ces paquets pour résoudre les dépendances (RECOMMANDÉ)" + ,IDC_PREREQ_CHECK,"Button",BS_AUTOCHECKBOX | WS_TABSTOP, + 7,187,227,14 + EDITTEXT IDC_PREREQ_EDIT,7,45,304,143,WS_VSCROLL | WS_HSCROLL | + ES_LEFT | ES_MULTILINE | ES_READONLY | ES_AUTOHSCROLL | + ES_AUTOVSCROLL + +END + +IDD_DROPPED DIALOG DISCARDABLE 0, 0, SETUP_STANDARD_DIALOG_W, 142 +STYLE DS_MODALFRAME | DS_CENTER | WS_POPUP | WS_CAPTION | WS_SYSMENU +CAPTION "Assistant Cygwin - Utiliser les sites miroirs éliminés ?" +FONT 8, "MS Shell Dlg" +BEGIN + LTEXT "Attention :",IDC_STATIC,7,8,40,8 + LTEXT "Un ou plusieurs miroirs sélectionnés ne sont plus " + "dans la liste officielle des miroirs Cygwin. " + "Certains paquets peuvent manquer ou ne pas être à jour.\n" + "Ceci concerne le(s) miroir(s) suivant(s) :", + IDC_STATIC,47,8,263,32 + EDITTEXT IDC_DROP_MIRRORS,7,40,303,40,WS_VSCROLL | WS_HSCROLL | + ES_LEFT | ES_MULTILINE | ES_READONLY | ES_AUTOHSCROLL | + ES_AUTOVSCROLL + LTEXT "Si vous avez des problèmes à l'installation pensez à " + "n'utiliser que les miroirs officiels.\n\n" + "Voulez-vous continuer avec ce(s) miroir(s) ?", + IDC_STATIC,7,88,303,24 + CONTROL "&Ne plus me prévenir pour ce(s) miroir(s)", + IDC_DROP_NOWARN,"Button",BS_AUTOCHECKBOX | WS_TABSTOP, + 7,120,213,15 + PUSHBUTTON "&Oui",IDYES,220,120,45,15 + DEFPUSHBUTTON "&Non",IDNO,265,120,45,15 + +END + +IDD_POSTINSTALL DIALOG DISCARDABLE 0, 0, SETUP_STANDARD_DIALOG_W, 142 +STYLE DS_MODALFRAME | DS_3DLOOK | DS_CENTER | WS_CHILD | WS_VISIBLE | + WS_CAPTION | WS_SYSMENU +CAPTION "Assistant Cygwin - Lancement des scripts post-installation" +FONT 8, "MS Shell Dlg" +BEGIN + CONTROL "",IDC_HEADSEPARATOR,"Static",SS_BLACKFRAME | SS_SUNKEN, + 0,28,SETUP_STANDARD_DIALOG_W,1 + ICON IDI_CYGWIN,IDC_HEADICON,SETUP_HEADICON_X,0,21,20 + LTEXT "Erreurs dans les scripts",IDC_STATIC_HEADER_TITLE + ,7,0,258,8,NOT WS_GROUP + LTEXT "Ceci n'indique pas forcément que les paquets concernés" + "ne fonctionneront pas, mais consultez " + "/var/log/setup.log.full avant de reporter un problème.", + IDC_STATIC,21,9,239,16,NOT WS_GROUP + EDITTEXT IDC_POSTINSTALL_EDIT,7,41,303,112,WS_VSCROLL | WS_HSCROLL | + ES_LEFT | ES_MULTILINE | ES_READONLY | ES_AUTOHSCROLL | + ES_AUTOVSCROLL +END + +IDD_FILE_INUSE DIALOG DISCARDABLE 0, 0, SETUP_STANDARD_DIALOG_DIMS +STYLE DS_MODALFRAME | DS_CENTER | WS_POPUP | WS_CAPTION +CAPTION "Détection d'un fichier en cours d'utilisation" +FONT 8, "MS Shell Dlg" +BEGIN + ICON IDI_WARNING,IDC_HEADICON,5,5 + LTEXT "Impossible d'extraire %s", + IDC_FILE_INUSE_MSG,27,5,203,8,SS_PATHELLIPSIS + LTEXT "Ce fichier est en cours d'utilisation par : ", + IDC_STATIC,27,14,203,8 + EDITTEXT IDC_FILE_INUSE_EDIT,27,23,203,28,WS_VSCROLL | + ES_LEFT | ES_MULTILINE | ES_READONLY | + ES_AUTOVSCROLL | NOT WS_TABSTOP + LTEXT "Choisir 'Stop' pour arrêter les process et recommencer, " + "Choisir 'Continuer' pour procéder (un reboot sera nécessaire).", + IDC_FILE_INUSE_HELP,27,52,203,16,NOT WS_GROUP + DEFPUSHBUTTON "&Stop",IDRETRY,47,75,55,15 + PUSHBUTTON "&Continuer",IDCONTINUE,133,75,55,15 +END + +///////////////////////////////////////////////////////////////////////////// +// +// Icon +// + +// Icon with lowest ID value placed first to ensure application icon +// remains consistent on all systems. +IDI_CYGWIN_SETUP ICON DISCARDABLE "cygwin-setup_fr.ico" +IDI_CYGWIN ICON DISCARDABLE "cygwin_fr.ico" +IDI_CYGWIN_TERMINAL ICON DISCARDABLE "cygwin-terminal_fr.ico" + +///////////////////////////////////////////////////////////////////////////// +// +// FILE +// + +CYGWIN-SETUP.ICON FILE DISCARDABLE "cygwin-setup_fr.ico" +CYGWIN.ICON FILE DISCARDABLE "cygwin_fr.ico" +CYGWIN-TERMINAL.ICON FILE DISCARDABLE "cygwin-terminal_fr.ico" + +///////////////////////////////////////////////////////////////////////////// +// +// Bitmap +// + +IDB_SPIN BITMAP DISCARDABLE "choose-spin.bmp" +IDB_CHECK_YES BITMAP DISCARDABLE "check-yes.bmp" +IDB_CHECK_NO BITMAP DISCARDABLE "check-no.bmp" +IDB_CHECK_NA BITMAP DISCARDABLE "check-nd.bmp" +IDB_TREE_PLUS BITMAP DISCARDABLE "tree-plus.bmp" +IDB_TREE_MINUS BITMAP DISCARDABLE "tree-minus.bmp" + +///////////////////////////////////////////////////////////////////////////// +// +// String Table +// + +STRINGTABLE DISCARDABLE +BEGIN + IDS_ROOT_SLASH "Attention : nous recommandons de ne PAS utiliser la racine du disque dur comme racine de Cygwin. Continuer quand même ?" + IDS_ROOT_SPACE "Vous ne devriez pas utiliser un chemin racine qui inclus des espaces dans les noms de dossiers. Continuer quand même ?" + IDS_MIRROR_LST "http://cygwin.com/mirrors.lst" + IDS_ERR_OPEN_WRITE "Impossible d'ouvrir %s en écriture : %s" + IDS_SETUPINI_MISSING "Impossible de récupérer %s depuis « %s »" + IDS_OLD_SETUPINI "Ce fichier setup.ini est plus ancien que celui utilisé lors de la dernière installation de Cygwin. Continuer quand même ?" + IDS_NOTHING_INSTALLED "Rien à installer" + IDS_INSTALL_COMPLETE "Installation terminée" + IDS_REBOOT_REQUIRED "Les fichiers en cours d'utilisation ont été remplacés. Vous devriez redémarrer dès que possible pour activer ces versions. Cygwin pourrait fonctionner de façon incorrecte jusqu'au redémarrage." + IDS_ERR_OPEN_READ "Impossible d'ouvrir %s en lecture : %s" + IDS_ROOT_ABSOLUTE "Le dossier d'installation doit être absolu, avec à la fois un identificateur de lecteur et une barre oblique au début : C:\\Cygwin" + IDS_DOWNLOAD_COMPLETE "Téléchargement terminé" + IDS_NOLOGFILE "Impossible d'ouvrir le fichier de trace %s en écriture" + IDS_UNINSTALL_COMPLETE "Désinstallation terminée" + IDS_WININET "Impossible de trouver ou de charger les DLLs de Internet Explorer 5" + IDS_ERR_CHDIR "Impossible de changer le dossier vers %s : %s [%.8x]" + IDS_OLD_SETUP_VERSION "Cet assistant est en version %s, mais setup.ini indique que la version %s est disponible.\nVous devriez le mettre à jour pour avoir les dernière fonctionnalitées et corrections de bogues." + IDS_DOWNLOAD_INCOMPLETE "Téléchargement incomplet. Recommencer ?" + IDS_INSTALL_ERROR "Erreur d'installation (%s), Continuer avec les autres paquets ?" + IDS_INSTALL_INCOMPLETE "Installation incomplète. Vérifiez %s pour les détails" + IDS_CORRUPT_PACKAGE "Le fichier du paquet %s a une copie locale altérée, supprimez la et recommencez." + IDS_SKIP_PACKAGE "%s\nVoulez-vous passer ce paquet ?" + IDS_WINDOW_INIT_BADMSG "Erreur Fatale : message windows %u inopiné reçu trop tôt lors de l'initialisation de la fenêtre." + IDS_UNCAUGHT_EXCEPTION "Erreur Fatale  : Exception non traitée\nThread: %s\nType: %s\nMessage: %s" + IDS_UNCAUGHT_EXCEPTION_WITH_ERRNO "Erreur Fatale  : Exception non traitée\nThread: %s\nType: %s\nMessage: %s\nAppErrNo: %d" + IDS_TRUSTKEEP_TOOLTIP "Garde tous les paquets à la version installée. " + "Ceci est équivalent à demander à l'assistant de ne faire aucun changement " + "aux paquets." + IDS_TRUSTCURR_TOOLTIP "Sélectionne globalement la version qui est actuellement " + "considérée comme la plus stable (RECOMMANDÉ)." + IDS_TRUSTEXP_TOOLTIP "Sélectionne globalement la version qui est considérée " + "comme expérimentale ou pour test par le mainteneur du paquet." + IDS_VIEWBUTTON_TOOLTIP "Itérer les différentes vues des paquets. Ceci détermine" + " quels paquets seront montrés dans la vue de sélection ci-dessous.\r\n" + "\r\n" + "Catégorie : regroupe par catégorie de paquets. Cliquez sur '+' pour étendre.\r\n" + "\r\n" + "Tout : montre tous les paquets.\r\n" + "\r\n" + "En attente : montre uniquement les paquets à ajouter, enlever ou mettre à jour. " + "Ceci montre ce que l'assistant est sur le point de modifier " + "lors de l'appui sur 'Suivant'.\r\n" + "\r\n" + "À jour : montre les paquets installés qui ne nécessitent pas d'action.\r\n" + "\r\n" + "Non installé : montre les paquets non installés ou qui ne sont pas " + "sélectionnés pour installation." + IDS_HIDEOBS_TOOLTIP "L'assistant cachera les paquets des catégories dont " + "le nom commence par '_'. Ces paquets sont vides et sont des emplacements " + "pour des paquets éliminés ou renommés, ou encore des paquets " + "d'infrastructure gérés automatiquement." + IDS_SIG_INVALID "Erreur pour le miroir : la signature de Setup.ini %s de %s est impossible à vérifier.\nLe miroir est peut-être corrompu ? Setup.ini rejeté." + IDS_CRYPTO_ERROR "Erreur interne : librairie gcrypt erreur %d %s" + IDS_SEARCH_TOOLTIP "Chercher cette valeur dans les noms des paquets." + IDS_LOCAL_DIR_DOWNLOAD "Choisir un dossier pour enregistrer les fichiers " + "téléchargés. Ce dossier sera créé s'il n'existe pas." + IDS_LOCAL_DIR_INSTALL "Choisir un dossier où l'assistant ira chercher les " + "fichiers téléchargés." + IDS_MAYBE_MKDIR "Dossier %s absent, voulez-cous le créer ?" + IDS_CANT_MKDIR "Impossible de créer le dossier %s, désolé. (Disque plein ou uniquement en lecture ?)" + IDS_NO_LOCALDIR "Dossier local des paquets %s absent.\nVoulez-vous que setup-FR-%s.exe efface les paquets\n" + "Mais il n'y aura rien à installer\n\nChoisir OK si c'est ce que vous voulez\nou Annuler pour choisir un autre dossier." + IDS_ELEVATED "Passer l'nstallation au process Administrateur." +END + +#endif // French (fr_FR) resources + +///////////////////////////////////////////////////////////////////////////// +// +// Manifest +// + +#ifdef __x86_64__ +CREATEPROCESS_MANIFEST_RESOURCE_ID RT_MANIFEST "setup64.exe.manifest" +#else +CREATEPROCESS_MANIFEST_RESOURCE_ID RT_MANIFEST "setup.exe.manifest" +#endif diff --git a/resource.h b/resource.h index 48f03ab..074a3f7 100644 --- a/resource.h +++ b/resource.h @@ -174,3 +174,8 @@ #define IDC_FILE_INUSE_EDIT 590 #define IDC_FILE_INUSE_MSG 591 #define IDC_FILE_INUSE_HELP 592 + +#ifdef LANG_FR + #define IDC_SPLASH_FR_URL 600 + #define IDC_SPLASH_FR_COPYR 601 +#endif diff --git a/root.cc b/root.cc index 247926a..c913067 100644 --- a/root.cc +++ b/root.cc @@ -44,7 +44,11 @@ static const char *cvsid = using namespace std; +#ifdef LANG_FR +StringOption RootOption ("", 'R', "root", "Dossier racine de l'installation", false); +#else StringOption RootOption ("", 'R', "root", "Root installation directory", false); +#endif static ControlAdjuster::ControlInfo RootControlsInfo[] = { { IDC_ROOTDIR_GRP, CP_STRETCH, CP_TOP }, @@ -109,7 +113,11 @@ browse (HWND h) memset (&bi, 0, sizeof (bi)); bi.hwndOwner = h; bi.pszDisplayName = name; +#ifdef LANG_FR + bi.lpszTitle = "Choisissez le dossier racine de l'installation"; +#else bi.lpszTitle = "Select an installation root directory"; +#endif bi.ulFlags = BIF_RETURNONLYFSDIRS; bi.lpfn = browse_cb; pidl = SHBrowseForFolder (&bi); @@ -210,6 +218,19 @@ directory_contains_wrong_version (HWND h) /* Forestall mixing. */ const char *setup_ver = is_64bit ? "64" : "32"; const char *inst_ver = is_64bit ? "32" : "64"; +#ifdef LANG_FR + snprintf (text, sizeof text, + "Vous essayez d'installer une version %s bits de Cygwin dans un dossier\n" + "qui contient une version %s bits de Cygwin. Si vous insistez, vous aller\n" + "casser l'installation existante.\n\n" + "Lancez soit http://lassauge.free.fr/cygwin/setup-FR-%s.exe pour mettre à jour \n" + "votre installation %s bits de Cygwin, ou choisissez un autre dossier\n" + "pour votre installation %s bits.", + setup_ver, inst_ver, + is_64bit ? "x86" : "x86_64", + inst_ver, setup_ver); + MessageBox (h, text, "Erreur CPU cible", MB_OK); +#else snprintf (text, sizeof text, "You're trying to install a %s bit version of Cygwin into a directory\n" "containing a %s bit version of Cygwin. Continuing to do so would\n" @@ -221,6 +242,7 @@ directory_contains_wrong_version (HWND h) is_64bit ? "x86" : "x86_64", inst_ver, setup_ver); MessageBox (h, text, "Target CPU mismatch", MB_OK); +#endif return 1; } diff --git a/sec-pubkey.h b/sec-pubkey.h new file mode 100644 index 0000000..d48f526 --- /dev/null +++ b/sec-pubkey.h @@ -0,0 +1,14 @@ + +/* Autogenerated from: lassauge.pub + * by: ./gpg-key-to-s-expr.sh + * at: Fri Oct 24 13:58:21 2008 */ + +"(public-key " + "(dsa " + "(p #00b6007883a3a60cae36b7ba6577607ecc44e37a07592185cf33e2c2b3336cdf5f6bb8825d29f03de775c0c1b8776667f23a7817220b883ca88f02a308f9b285d558f56606cef41b1775578f2fd740987fe4e171e2575aebecbd3f6d2ff7cf1d6f1f2c456d5a4c09a16c22a4c0abdc1bd34bd0e14f85a06636f29f36db168d46d7#) " + "(q #00b3ae2ff5143522fe501b8a68f30dfde44a91644d#) " + "(g #08bfa4c476695c78d7398b7526fe21df0b64f2a7472c838d21aca009cd11e7d1ddb41af9823c54693c778fa1863eaadddf7daf030e928865f2474873514aad335839c68c7835fa3c1ad0d3e2a7728ac440e58371177f2c438b1ff577004260eb7e7d3055018eee85c6c163890c461c3e2d71a45d4df32850bcaa44903aba17a4#) " + "(y #2252acc47600644271b4bcf93d9b98161b95008c91a906af65011ee771a706c211604aec354df4486aa942cc5366e2a71c83eca84de86fd8345e1b16e3386d923ad9c26534046c442ccae2c56ba7bc595b6ad69a8dd07b8fb037e637c9fb1ec8196dfa510233b7d0b617a93352f0dc1b13a9edeb43b935fa80d27ce800612d9d#)" + ")" +")" + diff --git a/site.cc b/site.cc index 46caef1..89ea54a 100644 --- a/site.cc +++ b/site.cc @@ -99,9 +99,17 @@ SiteList cached_site_list; /* Stale selected sites to warn about and add to cache */ SiteList dropped_site_list; +#ifdef LANG_FR +StringArrayOption SiteOption('s', "site", "Site de téléchargement"); +#else StringArrayOption SiteOption('s', "site", "Download site"); +#endif +#ifdef LANG_FR +BoolOption OnlySiteOption(false, 'O', "only-site", "Ignorer tous les sites sauf pour -s"); +#else BoolOption OnlySiteOption(false, 'O', "only-site", "Ignore all sites except for -s"); +#endif SiteSetting::SiteSetting (): saved (false) { @@ -411,10 +419,16 @@ do_download_site_info_thread (void *p) { // Error: Couldn't download the site info. // Go back to the Net setup page. +#ifndef LANG_FR MessageBox (h, TEXT ("Can't get list of download sites.\n") TEXT("Make sure your network settings are correct and try again."), NULL, MB_OK); +#else + MessageBox (h, TEXT ("Impossible d'avoir la liste des sites.\n") + TEXT("Vérifiez que vos paramètres réseau sont corrects et réessayez."), + TEXT("Erreur"), MB_OK); +#endif // Tell the progress page that we're done downloading Progress.PostMessageNow (WM_APP_SITE_INFO_DOWNLOAD_COMPLETE, 0, IDD_NET); } diff --git a/source.cc b/source.cc index 70751d2..adde3fa 100644 --- a/source.cc +++ b/source.cc @@ -38,8 +38,13 @@ static const char *cvsid = #include "getopt++/BoolOption.h" +#ifdef LANG_FR +static BoolOption DownloadOption (false, 'D', "download", "Télécharger depuis internet"); +static BoolOption LocalOption (false, 'L', "local-install", "Installer depuis un répertoire local"); +#else static BoolOption DownloadOption (false, 'D', "download", "Download from internet"); static BoolOption LocalOption (false, 'L', "local-install", "Install from local directory"); +#endif static int rb[] = { IDC_SOURCE_NETINST, IDC_SOURCE_DOWNLOAD, IDC_SOURCE_LOCALDIR, 0 }; diff --git a/splash.cc b/splash.cc index 265c3eb..085b3d6 100644 --- a/splash.cc +++ b/splash.cc @@ -25,8 +25,13 @@ static ControlAdjuster::ControlInfo SplashControlsInfo[] = { { IDC_SPLASH_TEXT, CP_STRETCH, CP_STRETCH }, { IDC_SPLASH_ICON, CP_LEFT, CP_BOTTOM }, { IDC_VERSION, CP_LEFT, CP_BOTTOM }, +#ifndef LANG_FR { IDC_SPLASH_COPYR, CP_LEFT, CP_BOTTOM }, { IDC_SPLASH_URL, CP_LEFT, CP_BOTTOM }, +#else + { IDC_SPLASH_FR_COPYR, CP_LEFT, CP_BOTTOM }, + { IDC_SPLASH_FR_URL, CP_LEFT, CP_BOTTOM }, +#endif {0, CP_LEFT, CP_TOP} }; @@ -45,9 +50,17 @@ void SplashPage::OnInit () { std::string ver = "Setup.exe version "; +#ifdef LANG_FR + ver += (setup_version[0] ? setup_version : "[inconnue]"); + ver += is_64bit ? " (64 bits)" : " (32 bits)"; +#else ver += (setup_version[0] ? setup_version : "[unknown]"); ver += is_64bit ? " (64 bit)" : " (32 bit)"; +#endif SetDlgItemFont(IDC_VERSION, "Arial", 10, FW_BOLD); ::SetWindowText (GetDlgItem (IDC_VERSION), ver.c_str()); makeClickable (IDC_SPLASH_URL, "http://www.cygwin.com"); +#ifdef LANG_FR + makeClickable (IDC_SPLASH_FR_URL, "http://lassauge.free.fr/cygwin/x86/release"); +#endif } diff --git a/threebar.cc b/threebar.cc index cadf3e7..9aea964 100644 --- a/threebar.cc +++ b/threebar.cc @@ -111,8 +111,15 @@ ThreeBarProgressPage::SetBar2 (long long progress, long long max) { int percent = (int) (100.0 * ((double) progress) / (double) max); SendMessage (ins_iprogress, PBM_SETPOS, (WPARAM) percent, 0); +#ifdef LANG_FR + std::string sp = stringify(percent); + std::string s="Assistant Cygwin - "; + s += sp; + s += "%"; +#else std::string s = stringify(percent); s += "% - Cygwin Setup"; +#endif GetOwner ()->SetWindowText (s.c_str()); } @@ -197,7 +204,11 @@ ThreeBarProgressPage::OnMessageApp (UINT uMsg, WPARAM wParam, LPARAM lParam) } else { +#ifdef LANG_FR + fatal("Sortie non attendue du thread de téléchargement", NO_ERROR); +#else fatal("Unexpected fallthrough from the download thread", NO_ERROR); +#endif } break; } -- 2.1.4