--- setup-FR/AntiVirus.cc.orig 2014-05-05 11:32:03.127807900 +0200 +++ setup-FR/AntiVirus.cc 2014-05-05 11:34:25.810074700 +0200 @@ -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; --- setup-FR/ChangeLog.orig 2014-05-05 11:35:35.577050700 +0200 +++ setup-FR/ChangeLog 2014-10-27 11:45:10.571409100 +0100 @@ -10926,4 +10926,4 @@ * zlib/Makefile.in: Regenerate from Makefile.am %%% $Id: ChangeLog,v 2.852 2014/10/26 08:04:53 corinna Exp $ -$Revision: 2.852 $ +$Revision: 2.852-FR $ --- setup-FR/choose.cc.orig 2014-05-05 11:32:03.324827600 +0200 +++ setup-FR/choose.cc 2014-05-05 11:34:25.864080100 +0200 @@ -62,8 +62,13 @@ #include "UserSettings.h" #include "getopt++/BoolOption.h" +#ifdef LANG_FR +static BoolOption UpgradeAlsoOption (false, 'g', "upgrade-also", "Mettre à jour les paquets"); +static BoolOption CleanOrphansOption (false, 'o', "delete-orphans", "Effacer les paquets orphelins"); +#else static BoolOption UpgradeAlsoOption (false, 'g', "upgrade-also", "also upgrade installed packages"); static BoolOption CleanOrphansOption (false, 'o', "delete-orphans", "remove orphaned packages"); +#endif using namespace std; @@ -270,9 +275,17 @@ 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); --- setup-FR/configure.ac.orig 2014-05-05 11:32:03.451840300 +0200 +++ setup-FR/configure.ac 2014-05-05 11:34:25.911084800 +0200 @@ -17,7 +17,7 @@ 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]) --- setup-FR/crypto.cc.orig 2014-05-05 11:32:03.523847500 +0200 +++ setup-FR/crypto.cc 2014-05-05 11:34:25.930086700 +0200 @@ -35,6 +35,7 @@ #include "geturl.h" #define CRYPTODEBUGGING (0) +#define SECONDKEY (1) #if CRYPTODEBUGGING #define ERRKIND __asm__ __volatile__ (".byte 0xcc"); note @@ -45,6 +46,18 @@ #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 @@ "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 @@ { /* 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 @@ #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 @@ // 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 @@ } // 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); --- setup-FR/cygpackage.cc.orig 2014-05-05 11:32:03.634858600 +0200 +++ setup-FR/cygpackage.cc 2014-05-05 11:34:25.959089600 +0200 @@ -77,6 +77,11 @@ 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 @@ 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 () --- setup-FR/desktop.cc.orig 2014-05-05 11:32:03.702865400 +0200 +++ setup-FR/desktop.cc 2014-05-05 11:34:25.997093400 +0200 @@ -48,9 +48,15 @@ #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 @@ 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); @@ -259,8 +269,13 @@ 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 { --- setup-FR/geturl.cc.orig 2014-05-05 11:32:03.944889600 +0200 +++ setup-FR/geturl.cc 2014-05-05 11:34:26.022095900 +0200 @@ -69,10 +69,17 @@ 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 @@ { 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 @@ { 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); } --- setup-FR/ini.cc.orig 2014-05-05 11:32:04.035898700 +0200 +++ setup-FR/ini.cc 2014-05-05 11:37:30.808572700 +0200 @@ -60,7 +60,11 @@ 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 @@ { 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 @@ } 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 @@ } 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 @@ } } +#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 ()) { --- setup-FR/IniDBBuilderPackage.cc.orig 2014-05-05 11:32:04.066901800 +0200 +++ setup-FR/IniDBBuilderPackage.cc 2014-05-05 11:34:26.100103700 +0200 @@ -57,9 +57,15 @@ { 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); --- setup-FR/install.cc.orig 2014-05-05 11:32:04.182913400 +0200 +++ setup-FR/install.cc 2014-05-05 11:34:26.128106500 +0200 @@ -73,9 +73,15 @@ 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; @@ -152,7 +158,11 @@ 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; try_run_script ("/etc/preremove/", pkg.name, ".sh"); @@ -162,7 +172,11 @@ 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 (); @@ -202,7 +216,11 @@ 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); @@ -366,15 +384,24 @@ { 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; } @@ -418,7 +445,11 @@ 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; @@ -430,7 +461,11 @@ /* 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; } @@ -522,7 +557,11 @@ // 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; @@ -536,6 +575,15 @@ // 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" @@ -544,6 +592,7 @@ fn.c_str()); rc = MessageBox (owner, msg, "Error writing file", +#endif MB_RETRYCONTINUE | MB_ICONWARNING | MB_TASKMODAL); } } @@ -603,7 +652,11 @@ { 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, @@ -614,7 +667,11 @@ // 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); } @@ -660,21 +717,38 @@ 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: @@ -728,7 +802,12 @@ 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) @@ -851,8 +930,13 @@ { 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); } @@ -924,9 +1008,15 @@ 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]; --- setup-FR/localdir.cc.orig 2014-05-05 11:32:04.342929400 +0200 +++ setup-FR/localdir.cc 2014-05-05 11:34:26.153109000 +0200 @@ -47,7 +47,11 @@ extern ThreeBarProgressPage Progress; extern LogFile * theLog; +#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 }, --- setup-FR/main.cc.orig 2014-05-05 11:32:04.435938700 +0200 +++ setup-FR/main.cc 2014-05-05 11:39:26.719162600 +0200 @@ -91,12 +91,21 @@ 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 () @@ -220,6 +229,10 @@ 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++) @@ -250,9 +263,15 @@ 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); } @@ -291,7 +310,11 @@ if (HelpOption) GetOption::GetInstance ().ParameterUsage (log (LOG_PLAIN) +#ifdef LANG_FR + << "\nOptions de ligne de commande :\n"); +#else << "\nCommand Line Options:\n"); +#endif else { if (elevate) --- setup-FR/Makefile.am.orig 2014-05-05 11:32:04.456940800 +0200 +++ setup-FR/Makefile.am 2014-05-05 11:34:26.222115900 +0200 @@ -129,6 +129,7 @@ crypto.cc \ crypto.h \ cyg-pubkey.h \ + sec-pubkey.h \ cygpackage.cc \ cygpackage.h \ desktop.cc \ @@ -286,7 +287,7 @@ 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 $@ $< # static const char version_store[] = VERSION_PREFIX " 2.686"; setup-src: --- setup-FR/msg.cc.orig 2014-05-05 11:32:04.541949300 +0200 +++ setup-FR/msg.cc 2014-05-05 11:34:43.979891500 +0200 @@ -70,7 +70,11 @@ return 0; } } +#ifdef LANG_FR + return MessageBox (owner, buf, "Assistant Cygwin", type); +#else return MessageBox (owner, buf, "Cygwin Setup", type); +#endif } static int --- setup-FR/net.cc.orig 2014-05-05 11:32:04.565951700 +0200 +++ setup-FR/net.cc 2014-05-05 11:34:44.003893900 +0200 @@ -40,7 +40,11 @@ #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; --- setup-FR/nio-file.cc.orig 2014-05-05 11:32:04.613956500 +0200 +++ setup-FR/nio-file.cc 2014-05-05 11:34:44.028896400 +0200 @@ -44,7 +44,11 @@ { 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); } } --- setup-FR/nio-ie5.cc.orig 2014-05-05 11:32:04.702965400 +0200 +++ setup-FR/nio-ie5.cc 2014-05-05 11:34:44.076901200 +0200 @@ -91,7 +91,11 @@ 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 } } --- setup-FR/package_message.h.orig 2014-05-05 11:32:04.766971800 +0200 +++ setup-FR/package_message.h 2014-05-05 11:34:44.099903500 +0200 @@ -33,7 +33,12 @@ { 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"); --- setup-FR/package_meta.cc.orig 2014-05-05 11:32:04.777972900 +0200 +++ setup-FR/package_meta.cc 2014-05-05 11:34:44.117905300 +0200 @@ -51,10 +51,17 @@ 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 @@ 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 @@ 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 (); } --- setup-FR/PickView.cc.orig 2014-05-05 11:32:04.950990200 +0200 +++ setup-FR/PickView.cc 2014-05-05 11:34:44.142907800 +0200 @@ -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 @@ {"Package", 0, 0, true}, {0, 0, 0, false} }; +#endif // PickView:: views const PickView::views PickView::views::Unknown (0); @@ -237,6 +262,18 @@ { 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 @@ return "Not Installed"; case 5: return "Category"; +#endif default: return ""; } @@ -445,8 +483,13 @@ // 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 @@ } // 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 @@ 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)); } --- setup-FR/postinstall.cc.orig 2014-05-05 11:32:04.975992700 +0200 +++ setup-FR/postinstall.cc 2014-05-05 11:34:44.166910200 +0200 @@ -126,7 +126,11 @@ 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); --- setup-FR/prereq.cc.orig 2014-05-05 11:32:05.034998600 +0200 +++ setup-FR/prereq.cc 2014-05-05 11:34:44.190912600 +0200 @@ -98,11 +98,19 @@ { // 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 @@ { 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 @@ s = s + i->first->name + "\t(" + i->first->trustp (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; --- setup-FR/propsheet.cc.orig 2014-05-05 11:32:05.114006500 +0200 +++ setup-FR/propsheet.cc 2014-05-05 11:34:44.217915300 +0200 @@ -178,8 +178,13 @@ 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: --- setup-FR/resource.h.orig 2014-05-05 11:32:05.270022100 +0200 +++ setup-FR/resource.h 2014-05-05 11:34:44.271920700 +0200 @@ -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 --- setup-FR/root.cc.orig 2014-05-05 11:32:05.278022900 +0200 +++ setup-FR/root.cc 2014-05-05 11:34:44.289922500 +0200 @@ -44,7 +44,11 @@ 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 @@ 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 @@ /* 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 @@ is_64bit ? "x86" : "x86_64", inst_ver, setup_ver); MessageBox (h, text, "Target CPU mismatch", MB_OK); +#endif return 1; } --- setup-FR/sec-pubkey.h.orig 2014-05-05 11:34:04.449938900 +0200 +++ setup-FR/sec-pubkey.h 2014-05-05 11:34:44.318925400 +0200 @@ -12,3 +12,17 @@ ")" ")" + +/* 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#)" + ")" +")" + --- setup-FR/setup.exe.manifest.orig 2014-05-05 11:32:05.354030500 +0200 +++ setup-FR/setup.exe.manifest 2014-10-27 11:44:23.278680300 +0100 @@ -36,6 +36,8 @@ + + --- setup-FR/setup64.exe.manifest.orig 2014-05-05 11:32:05.371032200 +0200 +++ setup-FR/setup64.exe.manifest 2014-10-27 11:44:23.323684800 +0100 @@ -36,6 +36,8 @@ + + --- setup-FR/site.cc.orig 2014-05-05 11:32:05.402035300 +0200 +++ setup-FR/site.cc 2014-05-05 11:34:44.337927300 +0200 @@ -99,9 +99,17 @@ /* 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 @@ { // 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); } --- setup-FR/source.cc.orig 2014-05-05 11:32:05.425037600 +0200 +++ setup-FR/source.cc 2014-05-05 11:34:44.362929800 +0200 @@ -38,8 +38,13 @@ #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 }; --- setup-FR/splash.cc.orig 2014-05-05 11:32:05.475042600 +0200 +++ setup-FR/splash.cc 2014-05-05 11:34:44.386932200 +0200 @@ -25,8 +25,13 @@ { 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 @@ 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/release"); +#endif } --- setup-FR/threebar.cc.orig 2014-05-05 11:32:05.618056900 +0200 +++ setup-FR/threebar.cc 2014-05-05 11:34:44.410934600 +0200 @@ -110,8 +110,15 @@ { 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()); } @@ -196,7 +203,11 @@ } 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; }