See ChangeLog: Wed Sep 15 16:22:17 CEST 1999 Werner Koch

This commit is contained in:
Werner Koch 1999-09-15 14:26:39 +00:00
parent 52139a60cf
commit dcaaa9223e
30 changed files with 4146 additions and 272 deletions

View File

@ -66,6 +66,11 @@ Disclaimer. [pt_BR]
jungmann@cwb.matrix.com.br
TRANSLATIONS Pedro Morais
??????????. [pt_PT]
morais@poli.org
TRANSLATIONS Janusz Aleksander Urbanowicz 1999-01-09
Disclaimer. [po]
alex@bofh.torun.pl

View File

@ -1,3 +1,11 @@
Wed Sep 15 16:22:17 CEST 1999 Werner Koch <wk@isil.d.shuttle.de>
* configure.in (ALL_LINGUAS): Add pt_PT.
* configure.in: Some tweaks for cross compiling under MingW32
* acconfig.h (USE_STATIC_RNDW32): New.
Tue Sep 7 17:08:10 CEST 1999 Werner Koch <wk@isil.d.shuttle.de>

2
THANKS
View File

@ -17,7 +17,7 @@ Christian von Roques roques@pond.sub.org
Christopher Oliver oliver@fritz.traverse.net
Christian Recktenwald chris@citecs.de
Daniel Eisenbud eisenbud@cs.swarthmore.edu
Daniel Koenig dan@mail.isis.de
Daniel Koening dan@mail.isis.de
David Ellement ellement@sdd.hp.com
Detlef Lannert lannert@lannert.rz.uni-duesseldorf.de
Dirk Lattermann dlatt@t-online.de

View File

@ -91,6 +91,13 @@
/* defined if we run on some of the PCDOS like systems (DOS, Windoze. OS/2)
* with special properties like no file modes */
#undef HAVE_DOSISH_SYSTEM
/* because the Unix gettext has to much overhead on MingW32 systems
* and these systems lack Posix functions, we use a simplified version
* of gettext */
#undef USE_SIMPLE_GETTEXT
/* At some point in the system we need to know that we use the Windows
* random module. */
#undef USE_STATIC_RNDW32
#undef USE_CAPABILITIES

View File

@ -1,33 +1,32 @@
Mon Sep 13 10:51:29 CEST 1999 Werner Koch <wk@isil.d.shuttle.de>
Wed Sep 15 16:22:17 CEST 1999 Werner Koch <wk@isil.d.shuttle.de>
* rndw32.c: New.
Mon Sep 13 10:51:29 CEST 1999 Werner Koch <wk@isil.d.shuttle.de>
* bithelp.h: New.
* rmd160.h, sha1.h, md5.h: Use the rol macro from bithelp.h
Tue Sep 7 16:23:36 CEST 1999 Werner Koch <wk@isil.d.shuttle.de>
* Makefile.am: Fixed seds for latest egcc. By Ollivier Robert.
Mon Sep 6 19:59:08 CEST 1999 Werner Koch <wk@isil.d.shuttle.de>
* des.c (selftest): Add some testpattern
Mon Aug 30 20:38:33 CEST 1999 Werner Koch <wk@isil.d.shuttle.de>
* cipher.c (do_cbc_encrypt): Fixed serious bug occuring when not using
in place encryption. Pointed out by Frank Stajano.
Mon Jul 26 09:34:46 CEST 1999 Werner Koch <wk@isil.d.shuttle.de>
* md5.c (md5_final): Fix for a SCO cpp bug.
Thu Jul 15 10:15:35 CEST 1999 Werner Koch <wk@isil.d.shuttle.de>
* elgamal.c (elg_check_secret_key,elg_encrypt
elg_decrypt,elg_sign,elg_verify): Sanity check on the args.
* dsa.c (dsa_check_secret_key,dsa_sign,dsa_verify): Ditto.

View File

@ -10,14 +10,15 @@ noinst_LTLIBRARIES = libcipher.la
# and EXTRA_foo_SOURCES entries.
# Hmmm is there a more easy way to do this? (EXTRA_PROGRAMS
# might also list programs which are not modules)
# MODULES: rndunix rndlinux rndegd
# MODULES: rndunix rndlinux rndegd rndw32
# MODULES: sha1 rmd160 md5 tiger
EXTRA_PROGRAMS = rndunix rndlinux rndegd \
EXTRA_PROGRAMS = rndunix rndlinux rndegd rndw32 \
sha1 rmd160 md5 tiger
EXTRA_rndlinux_SOURCES = rndlinux.c
EXTRA_rndunix_SOURCES = rndunix.c
EXTRA_rndegd_SOURCES = rndegd.c
EXTRA_rndw32_SOURCES = rndw32.c
EXTRA_md5_SOURCES = md5.c
EXTRA_rmd160_SOURCES = rmd160.c
EXTRA_sha1_SOURCES = sha1.c
@ -99,4 +100,3 @@ rndegd: $(srcdir)/rndegd.c
$(COMPILE) $(DYNLINK_MOD_CFLAGS) -o rndegd $(srcdir)/rndegd.c

View File

@ -31,4 +31,9 @@ void randomize_buffer( byte *buffer, size_t length, int level );
byte *get_random_bits( size_t nbits, int level, int secure );
void fast_random_poll( void );
/*-- rndw32.c --*/
#ifdef USE_STATIC_RNDW32
void rndw32_set_dll_name( const char *name );
#endif
#endif /*G10_RANDOM_H*/

View File

@ -15,7 +15,7 @@ AM_CONFIG_HEADER(config.h)
VERSION=`cat $srcdir/VERSION`
PACKAGE=gnupg
ALL_LINGUAS="de es_ES fr it pl pt_BR ru"
ALL_LINGUAS="de es_ES fr it pl pt_BR pt_PT ru"
static_modules="sha1 md5 rmd160"
AC_SUBST(VERSION)
AC_SUBST(PACKAGE)
@ -138,11 +138,31 @@ AC_ARG_WITH(capabilities,
AC_MSG_RESULT($use_capabilities)
AM_MAINTAINER_MODE
dnl Checks for programs.
AC_CANONICAL_SYSTEM
dnl
dnl Setup some stuff depending on host/target.
dnl
case "${target}" in
*-*-mingw32)
# special stuff for Windoze NT
# Do we need to set cross_compiling here or is it sufficient
# to rely on AC_PROG_CC which is called later?
cross_compiling=yes
CC="${target}-gcc"
CPP="${target}-gcc -E"
RANLIB="${target}-ranlib"
;;
*)
;;
esac
AC_ARG_PROGRAM
AC_PROG_MAKE_SET
AM_SANITY_CHECK
@ -181,14 +201,11 @@ try_gdbm=yes
case "${target}" in
*-*-mingw32)
# special stuff for Windoze NT
cross_compiling=yes
CC="${target}-gcc"
CPP="${target}-gcc -E"
RANLIB="${target}-ranlib"
ac_cv_have_dev_random=no
AC_DEFINE(USE_ONLY_8DOT3)
AC_DEFINE(HAVE_DRIVE_LETTERS)
AC_DEFINE(HAVE_DOSISH_SYSTEM)
AC_DEFINE(USE_SIMPLE_GETTEXT)
try_gettext="no"
try_gdbm="no"
;;
@ -489,6 +506,7 @@ if test "$use_static_rnd" = default; then
case "${target}" in
*-*-mingw32)
static_modules="$static_modules rndw32"
AC_DEFINE(USE_STATIC_RNDW32)
;;
i?86-emx-os2|i?86-*-os2*emx)
static_modules="$static_modules rndos2"

View File

@ -1219,6 +1219,13 @@ This is not for normal use. Use the source to see for what it might be useful.
This is not for normal use. Use the source to see for what it might be useful.
</para></listitem></varlistentry>
<varlistentry>
<term>--entropy-dll-name &ParmFile;</term>
<listitem><para>
This option is only used for the Win32 version of GnuPG and changes the
default location (c:/gnupg/entropy.dll) of the Winseed DLL to &ParmFile;.
</para></listitem></varlistentry>
</variablelist>
</refsect1>

View File

@ -1,3 +1,8 @@
Wed Sep 15 16:22:17 CEST 1999 Werner Koch <wk@isil.d.shuttle.de>
* g10.c: New option --entropy-dll-name
Mon Sep 13 10:51:29 CEST 1999 Werner Koch <wk@isil.d.shuttle.de>

View File

@ -177,6 +177,7 @@ enum cmd_and_opt_values { aNull = 0,
oAllowNonSelfsignedUID,
oNoLiteral,
oSetFilesize,
oEntropyDLLName,
aTest };
@ -338,6 +339,7 @@ static ARGPARSE_OPTS opts[] = {
{ oAllowNonSelfsignedUID, "allow-non-selfsigned-uid", 0, "@" },
{ oNoLiteral, "no-literal", 0, "@" },
{ oSetFilesize, "set-filesize", 20, "@" },
{ oEntropyDLLName, "entropy-dll-name", 2, "@" },
{0} };
@ -438,6 +440,9 @@ build_list( const char *text, const char * (*mapf)(int), int (*chkf)(int) )
static void
i18n_init(void)
{
#ifdef USE_SIMPLE_GETTEXT
set_gettext_file( PACKAGE );
#else
#ifdef ENABLE_NLS
#ifdef HAVE_LC_MESSAGES
setlocale( LC_TIME, "" );
@ -448,6 +453,7 @@ i18n_init(void)
bindtextdomain( PACKAGE, G10_LOCALEDIR );
textdomain( PACKAGE );
#endif
#endif
}
static void
@ -859,6 +865,13 @@ main( int argc, char **argv )
opt.set_filesize = pargs.r.ret_ulong;
break;
case oEntropyDLLName:
#ifdef USE_STATIC_RNDW32
log_info("set dllname to `%s'\n", pargs.r.ret_str );
rndw32_set_dll_name( pargs.r.ret_str );
#endif
break;
default : pargs.err = configfp? 1:2; break;
}
}

View File

@ -210,7 +210,7 @@ static struct helptexts { const char *key; const char *help; } helptexts[] = {
)},
{ "detached_signature.filename", N_(
"Give the name fo the file to which the signature applies"
"Give the name of the file to which the signature applies"
)},
/* openfile.c (overwrite_filep) */

View File

@ -312,7 +312,9 @@ proc_encrypted( CTX c, PACKET *pkt )
/*log_debug("dat: %sencrypted data\n", c->dek?"":"conventional ");*/
if( !c->dek && !c->last_was_session_key ) {
/* assume this is old conventional encrypted data */
/* assume this is old conventional encrypted data
* Actually we should use IDEA and MD5 in this case, but becuase
* IDEA is patented we can't do so */
c->dek = passphrase_to_dek( NULL, 0,
opt.def_cipher_algo ? opt.def_cipher_algo
: DEFAULT_CIPHER_ALGO, NULL, 0 );

View File

@ -1,3 +1,8 @@
Wed Sep 15 16:22:17 CEST 1999 Werner Koch <wk@isil.d.shuttle.de>
* i18n.h: Add support for simple-gettext.
Tue Jun 29 21:44:25 CEST 1999 Werner Koch <wk@isil.d.shuttle.de>

View File

@ -21,6 +21,14 @@
#ifndef G10_I18N_H
#define G10_I18N_H
#ifdef USE_SIMPLE_GETTEXT
int set_gettext_file( const char *filename );
const char *gettext( const char *msgid );
#define _(a) gettext (a)
#define N_(a) (a)
#else
#ifdef HAVE_LOCALE_H
#include <locale.h> /* suggested by Ernst Molitor */
#endif
@ -37,5 +45,6 @@
#define _(a) (a)
#define N_(a) (a)
#endif
#endif /* !USE_SIMPLE_GETTEXT */
#endif /*G10_I18N_H*/

View File

@ -1,11 +1,16 @@
Tue Sep 7 16:23:36 CEST 1999 Werner Koch <wk@isil.d.shuttle.de>
Wed Sep 15 16:22:17 CEST 1999 Werner Koch <wk@isil.d.shuttle.de>
* pt_PT.po: New. Done by Pedro Morais.
* it.po: Updated by Marco.
Tue Sep 7 16:23:36 CEST 1999 Werner Koch <wk@isil.d.shuttle.de>
* pl.po: Updated.
Mon Sep 6 19:59:08 CEST 1999 Werner Koch <wk@isil.d.shuttle.de>
* fr.po: Imported and fixed a msgid.
* de.po: Ditto.
* pt_BR.po: Ditto.

View File

@ -3471,7 +3471,7 @@ msgstr ""
"übereinstimmen, wird das Mantra akzeptiert."
#: g10/helptext.c:213
msgid "Give the name fo the file to which the signature applies"
msgid "Give the name of the file to which the signature applies"
msgstr ""
"Geben Sie den Namen der Datei an, zu dem die abgetrennte Unterschrift gehört"

View File

@ -3409,7 +3409,7 @@ msgid "Please repeat the last passphrase, so you are sure what you typed in."
msgstr ""
#: g10/helptext.c:213
msgid "Give the name fo the file to which the signature applies"
msgid "Give the name of the file to which the signature applies"
msgstr ""
#: g10/helptext.c:218

View File

@ -3440,7 +3440,7 @@ msgstr ""
"Répétez le dernier mot de passe pour être sûr de ce que vous avez tapé."
#: g10/helptext.c:213
msgid "Give the name fo the file to which the signature applies"
msgid "Give the name of the file to which the signature applies"
msgstr "Donnez le nom du fichier auquel la signature se rapporte"
#: g10/helptext.c:218

368
po/it.po
View File

@ -4,9 +4,9 @@
#
msgid ""
msgstr ""
"Project-Id-Version: gnupg-0.9.7\n"
"Project-Id-Version: gnupg-1.0.0\n"
"POT-Creation-Date: 1999-09-05 19:21+0200\n"
"PO-Revision-Date: 1999-08-17 23:04+02:00\n"
"PO-Revision-Date: 1999-09-09 15:51+02:00\n"
"Last-Translator: Marco d'Itri <md@linux.it>\n"
"Language-Team: Italian <it@li.org>\n"
"MIME-Version: 1.0\n"
@ -35,11 +35,11 @@ msgstr "sS"
#: util/miscutil.c:279 util/miscutil.c:307
msgid "no"
msgstr ""
msgstr "no"
#: util/miscutil.c:280 util/miscutil.c:310
msgid "nN"
msgstr ""
msgstr "nN"
#: g10/keyedit.c:564 util/miscutil.c:308
msgid "quit"
@ -1133,18 +1133,16 @@ msgid "No such user ID.\n"
msgstr "User ID inesistente.\n"
#: g10/pkclist.c:756
#, fuzzy
msgid "skipped: public key already set as default recipient\n"
msgstr "%s: saltato: chiave pubblica già presente\n"
msgstr "saltato: chiave pubblica già impostata come destinatario predefinito\n"
#: g10/pkclist.c:778
msgid "Public key is disabled.\n"
msgstr "La chiave pubblica è disabilitata.\n"
#: g10/pkclist.c:785
#, fuzzy
msgid "skipped: public key already set with --encrypt-to\n"
msgstr "%s: saltato: chiave pubblica già presente\n"
msgstr "saltato: chiave pubblica già impostata con --encrypt-to\n"
#: g10/pkclist.c:816
#, c-format
@ -1550,14 +1548,12 @@ msgid "RSA key cannot be used in this version\n"
msgstr "In questa versione non possono essere usate chiavi RSA\n"
#: g10/getkey.c:1291 g10/getkey.c:1330
#, fuzzy
msgid "No key for user ID\n"
msgstr "Non ci sono chiavi per questo user-id\n"
msgstr "Non ci sono chiavi per questo user ID\n"
#: g10/getkey.c:1369 g10/getkey.c:1409
#, fuzzy
msgid "No user ID for key\n"
msgstr "Non ci sono user-id per questa chiave\n"
msgstr "Non ci sono user ID per questa chiave\n"
#: g10/getkey.c:1565 g10/getkey.c:1621
#, c-format
@ -1640,14 +1636,14 @@ msgid " secret keys unchanged: %lu\n"
msgstr "chiavi segrete non cambiate: %lu\n"
#: g10/import.c:362 g10/import.c:554
#, fuzzy, c-format
#, c-format
msgid "key %08lX: no user ID\n"
msgstr "chiave %08lX: nessun user id\n"
msgstr "chiave %08lX: nessun user ID\n"
#: g10/import.c:376
#, fuzzy, c-format
#, c-format
msgid "key %08lX: no valid user IDs\n"
msgstr "chiave %08lX: nessun user id valido\n"
msgstr "chiave %08lX: nessun user ID valido\n"
#: g10/import.c:378
msgid "this may be caused by a missing self-signature\n"
@ -1698,14 +1694,14 @@ msgid "key %08lX: can't read original keyblock: %s\n"
msgstr "chiave %08lX: impossibile leggere il keyblock originale: %s\n"
#: g10/import.c:469
#, fuzzy, c-format
#, c-format
msgid "key %08lX: 1 new user ID\n"
msgstr "chiave %08lX: un nuovo user id\n"
msgstr "chiave %08lX: 1 nuovo user ID\n"
#: g10/import.c:472
#, fuzzy, c-format
#, c-format
msgid "key %08lX: %d new user IDs\n"
msgstr "chiave %08lX: %d nuovi user id\n"
msgstr "chiave %08lX: %d nuovi user ID\n"
#: g10/import.c:475
#, c-format
@ -1766,9 +1762,9 @@ msgid "key %08lX: revocation certificate imported\n"
msgstr "chiave %08lX: certificato di revoca importato\n"
#: g10/import.c:711
#, fuzzy, c-format
#, c-format
msgid "key %08lX: no user ID for signature\n"
msgstr "chiave %08lX: nessun user id per la firma\n"
msgstr "chiave %08lX: nessun user ID per la firma\n"
#: g10/import.c:718 g10/import.c:742
#, c-format
@ -1791,14 +1787,14 @@ msgid "key %08lX: invalid subkey binding\n"
msgstr "chiave %08lX: legame con la subchiave non valido:\n"
#: g10/import.c:769
#, fuzzy, c-format
#, c-format
msgid "key %08lX: accepted non self-signed user ID '"
msgstr "chiave %08lX: accettato l'user-id non autofirmato '"
msgstr "chiave %08lX: accettato l'user ID non autofirmato '"
#: g10/import.c:798
#, fuzzy, c-format
#, c-format
msgid "key %08lX: skipped user ID '"
msgstr "chiave %08lX: saltato l'user-id '"
msgstr "chiave %08lX: saltato l'user ID '"
#: g10/import.c:821
#, c-format
@ -1863,7 +1859,7 @@ msgstr "%d firme non corrette\n"
#: g10/keyedit.c:223
msgid "1 signature not checked due to a missing key\n"
msgstr "1 firma non controllata per mancanza della chiave\n"
msgstr "una firma non controllata per mancanza della chiave\n"
#: g10/keyedit.c:225
#, c-format
@ -1872,7 +1868,7 @@ msgstr "%d firme non controllate per mancanza delle chiavi\n"
#: g10/keyedit.c:227
msgid "1 signature not checked due to an error\n"
msgstr "1 firma non controllata a causa di un errore\n"
msgstr "una firma non controllata a causa di un errore\n"
#: g10/keyedit.c:229
#, c-format
@ -1880,14 +1876,13 @@ msgid "%d signatures not checked due to errors\n"
msgstr "%d firme non controllate a causa di errori\n"
#: g10/keyedit.c:231
#, fuzzy
msgid "1 user ID without valid self-signature detected\n"
msgstr "Trovato 1 user id senza autofirma valida\n"
msgstr "Trovato un user ID senza autofirma valida\n"
#: g10/keyedit.c:233
#, fuzzy, c-format
#, c-format
msgid "%d user IDs without valid self-signatures detected\n"
msgstr "Trovati %d user id senza autofirme valide\n"
msgstr "Trovati %d user ID senza autofirme valide\n"
#. Fixme: see whether there is a revocation in which
#. * case we should allow to sign it again.
@ -2000,9 +1995,8 @@ msgid "list"
msgstr "list"
#: g10/keyedit.c:570
#, fuzzy
msgid "list key and user IDs"
msgstr "elenca le chiavi e gli user id"
msgstr "elenca le chiavi e gli user ID"
#: g10/keyedit.c:571
msgid "l"
@ -2013,9 +2007,8 @@ msgid "uid"
msgstr "uid"
#: g10/keyedit.c:572
#, fuzzy
msgid "select user ID N"
msgstr "scegli l'user id N"
msgstr "scegli l'user ID N"
#: g10/keyedit.c:573
msgid "key"
@ -2066,18 +2059,16 @@ msgid "adduid"
msgstr "adduid"
#: g10/keyedit.c:580
#, fuzzy
msgid "add a user ID"
msgstr "aggiungi un user id"
msgstr "aggiungi un user ID"
#: g10/keyedit.c:581
msgid "deluid"
msgstr "deluid"
#: g10/keyedit.c:581
#, fuzzy
msgid "delete user ID"
msgstr "cancella un user id"
msgstr "cancella un user ID"
#: g10/keyedit.c:582
msgid "addkey"
@ -2198,14 +2189,12 @@ msgid "Need the secret key to do this.\n"
msgstr "Per fare questo serve la chiave segreta.\n"
#: g10/keyedit.c:758
#, fuzzy
msgid "Really sign all user IDs? "
msgstr "Firmo davvero tutti gli user id? "
msgstr "Firmo davvero tutti gli user ID? "
#: g10/keyedit.c:759
#, fuzzy
msgid "Hint: Select the user IDs to sign\n"
msgstr "Suggerimento: seleziona gli user id da firmare\n"
msgstr "Suggerimento: seleziona gli user ID da firmare\n"
#: g10/keyedit.c:786 g10/keyedit.c:968
#, c-format
@ -2213,24 +2202,20 @@ msgid "update of trustdb failed: %s\n"
msgstr "aggiornamento del trustdb fallito: %s\n"
#: g10/keyedit.c:797 g10/keyedit.c:818
#, fuzzy
msgid "You must select at least one user ID.\n"
msgstr "Devi selezionare almeno un user id.\n"
msgstr "Devi selezionare almeno un user ID.\n"
#: g10/keyedit.c:799
#, fuzzy
msgid "You can't delete the last user ID!\n"
msgstr "Non puoi cancellare l'ultimo user id!\n"
msgstr "Non puoi cancellare l'ultimo user ID!\n"
#: g10/keyedit.c:802
#, fuzzy
msgid "Really remove all selected user IDs? "
msgstr "Tolgo davvero tutti gli user id selezionati? "
msgstr "Tolgo davvero tutti gli user ID selezionati? "
#: g10/keyedit.c:803
#, fuzzy
msgid "Really remove this user ID? "
msgstr "Tolgo davvero questo user id? "
msgstr "Tolgo davvero questo user ID? "
#: g10/keyedit.c:839 g10/keyedit.c:861
msgid "You must select at least one key.\n"
@ -2337,9 +2322,9 @@ msgid "No corresponding signature in secret ring\n"
msgstr "Manca la firma corrispondente nel portachiavi segreto\n"
#: g10/keyedit.c:1566
#, fuzzy, c-format
#, c-format
msgid "No user ID with index %d\n"
msgstr "Nessun user id con l'indice %d\n"
msgstr "Nessun user ID con l'indice %d\n"
#: g10/keyedit.c:1612
#, c-format
@ -2366,30 +2351,22 @@ msgstr "Creare un certificato di revoca per questa firma? (s/N)"
#. FIXME: detect duplicates here
#: g10/keyedit.c:1740
#, fuzzy
msgid "You have signed these user IDs:\n"
msgstr "Non puoi cancellare l'ultimo user id!\n"
msgstr "Non puoi cancellare l'ultimo user ID!\n"
#: g10/keyedit.c:1754 g10/keyedit.c:1789
#, fuzzy, c-format
#, c-format
msgid " signed by %08lX at %s\n"
msgstr ""
"\"\n"
"firmata con la tua chiave %08lX a %s\n"
"\n"
msgstr " firmata da %08lX il %s\n"
#: g10/keyedit.c:1759
#, fuzzy, c-format
#, c-format
msgid " revoked by %08lX at %s\n"
msgstr ""
"\"\n"
"firmata con la tua chiave %08lX a %s\n"
"\n"
msgstr " revocata da %08lX il %s\n"
#: g10/keyedit.c:1779
#, fuzzy
msgid "You are about to revoke these signatures:\n"
msgstr "Vuoi davvero revocare le chiavi selezionate? "
msgstr "Stai per revocare queste firme:\n"
#: g10/keyedit.c:1797
msgid "Really create the revocation certificates? (y/N)"
@ -3032,9 +3009,8 @@ msgid "Ooops, no keys\n"
msgstr "Ooops, mancano le chiavi\n"
#: g10/trustdb.c:2061
#, fuzzy
msgid "Ooops, no user IDs\n"
msgstr "Ooops, mancano gli user id\n"
msgstr "Ooops, mancano gli user ID\n"
#: g10/trustdb.c:2218
#, c-format
@ -3202,27 +3178,24 @@ msgstr ""
"ho provato %d volte!\n"
#: g10/delkey.c:93
#, fuzzy
msgid "there is a secret key for this public key!\n"
msgstr "rimuove una chiave dal portachiavi pubblico"
msgstr "c'è una chiave segreta per questa chiave pubblica!\n"
#: g10/delkey.c:95
msgid "use option \"--delete-secret-key\" to delete it first.\n"
msgstr ""
msgstr "prima usa l'opzione \"--delete-secret-key\" per cancellarla.\n"
#: g10/delkey.c:111
#, fuzzy
msgid "can't do that in batchmode without \"--yes\"\n"
msgstr "impossibile fare questo in modo batch\n"
msgstr "impossibile fare questo in modo batch senza \"--yes\"\n"
#: g10/delkey.c:133
#, fuzzy
msgid "Delete this key from the keyring? "
msgstr "rimuove una chiave dal portachiavi pubblico"
msgstr "Vuoi cancellare questa chiave dal portachiavi? "
#: g10/delkey.c:141
msgid "This is a secret key! - really delete? "
msgstr ""
msgstr "È una chaive segreta! - Vuoi cancellarla davvero? "
#: g10/helptext.c:47
msgid ""
@ -3230,19 +3203,23 @@ msgid ""
"to any 3rd party. We need it to implement the web-of-trust; it has nothing\n"
"to do with the (implicitly created) web-of-certificates."
msgstr ""
"E compito tuo assegnare un valore; questo valore non sarà mai esportato a\n"
"terzi. Ci serve per implementare il web-of-trust; non ha nulla a che fare\n"
"con il web-of-certificates (creato implicitamente)."
#: g10/helptext.c:53
msgid "If you want to use this revoked key anyway, answer \"yes\"."
msgstr ""
msgstr "Se vuoi usare comunque questa chiave revocata, rispondi \"si\"."
#: g10/helptext.c:57
msgid "If you want to use this untrusted key anyway, answer \"yes\"."
msgstr ""
msgstr "Se vuoi usare comunque questa chiave non fidata, rispondi \"si\"."
#: g10/helptext.c:61
msgid ""
"Enter the user ID of the addressee to whom you want to send the message."
msgstr ""
"Inserisci l'user ID del destinatario a cui vuoi mandare il messaggio."
#: g10/helptext.c:65
msgid ""
@ -3264,6 +3241,25 @@ msgid ""
"this is the reason why the encryption only ElGamal key is not available in\n"
"this menu."
msgstr ""
"Seleziona l'algoritmo da usare.\n"
"\n"
"DSA (alias DSS) è un algoritmo usabile solo per firmare. E l'algoritmo\n"
"suggerito perché verificare firme DSA è molto più veloce di quelle ElGamal.\n"
"\n"
"ElGamal è un algoritmo usabile per firmare e cifrare.\n"
"OpenPGP distingue tra due versioni di questo algoritmo: una solo per "
"firmare\n"
"e una per firmare e cifrare. In realtà è sempre lo stesso, ma per creare\n"
"firme sicure per la cifratura occorre scegliere in un modo particolare "
"alcuni\n"
"parametri: questo programma lo fa ma non è richiesto che altre "
"implementazioni\n"
"di OpenPGP capiscano la versione per firmare e cifrare.\n"
"\n"
"La prima chiave (primaria) deve sempre essere una chiave in grado di "
"firmare;\n"
"questo è il motivo per cui le chiavi ElGamal solo per cifrare non sono\n"
"disponibili in questo menù."
#: g10/helptext.c:85
msgid ""
@ -3271,16 +3267,19 @@ msgid ""
"because they are not supported by all programs and signatures created\n"
"with them are quite large and very slow to verify."
msgstr ""
"Anche se queste chiavi sono definite da RFC2400 non sono suggerite perché "
"non\n"
"sono gestite da tutti i programmi e le firme create sono grandi e lunghe da\n"
"verificare."
#: g10/helptext.c:92
#, fuzzy
msgid "Enter the size of the key"
msgstr "Inserisci l'user ID: "
msgstr "Inserisci le dimensioni della chiave"
#: g10/helptext.c:96 g10/helptext.c:101 g10/helptext.c:113 g10/helptext.c:145
#: g10/helptext.c:150 g10/helptext.c:155 g10/helptext.c:160
msgid "Answer \"yes\" or \"no\""
msgstr ""
msgstr "Rispondi \"si\" o \"no\""
#: g10/helptext.c:106
msgid ""
@ -3289,19 +3288,22 @@ msgid ""
"get a good error response - instead the system tries to interpret\n"
"the given value as an interval."
msgstr ""
"Inserisci il valore richiesto come indicato dal prompt.\n"
"È possibile inserire una data in formato ISO (YYYY-MM-DD) ma non avrai un\n"
"messaggio di errore corretto: il sistema cerca di interpretare il valore\n"
"dato come un intervallo."
#: g10/helptext.c:118
msgid "Enter the name of the key holder"
msgstr ""
msgstr "Inserisci il nome del proprietario della chiave"
#: g10/helptext.c:123
msgid "please enter an optional but highly suggested email address"
msgstr ""
msgstr "Inserisci un indirizzo di email opzionale (ma fortemente suggerito)"
#: g10/helptext.c:127
#, fuzzy
msgid "Please enter an optional comment"
msgstr "Inserisci il nome del file di dati: "
msgstr "Inserisci un commento opzionale"
#: g10/helptext.c:132
msgid ""
@ -3311,24 +3313,31 @@ msgid ""
"O to continue with key generation.\n"
"Q to to quit the key generation."
msgstr ""
"N per cambiare il nome.\n"
"C per cambiare il commento.\n"
"E per cambiare l'indirizzo di email.\n"
"O per continuare con la generazione della chiave.\n"
"Q per abbandonare il processo di generazione della chiave."
#: g10/helptext.c:141
msgid "Answer \"yes\" (or just \"y\") if it is okay to generate the sub key."
msgstr ""
msgstr "Rispondi \"si\" (o \"y\") se va bene generare la subchiave."
#: g10/helptext.c:164
msgid "Answer \"yes\" is you want to sign ALL the user IDs"
msgstr ""
msgstr "Rispondi \"si\" se vuoi firmare TUTTI gli user ID"
#: g10/helptext.c:168
msgid ""
"Answer \"yes\" if you really want to delete this user ID.\n"
"All certificates are then also lost!"
msgstr ""
"Rispondi \"si\" se vuoi davvero cancellare questo user ID.\n"
"Tutti i certificati saranno persi!"
#: g10/helptext.c:173
msgid "Answer \"yes\" if it is okay to delete the subkey"
msgstr ""
msgstr "Rispondi \"si\" se va bene cancellare la subchiave"
#: g10/helptext.c:178
msgid ""
@ -3336,6 +3345,9 @@ msgid ""
"to delete this signature because it may be important to establish a\n"
"trust connection to the key or another key certified by this key."
msgstr ""
"Questa è una firma valida per la chiave. Normalmente non vorresti cancellare\n"
"questa firma perchè può essere importante per stabilire una connessione di\n"
"fiducia alla chiave o a un'altra chiave certificata da questa chiave."
#: g10/helptext.c:183
msgid ""
@ -3344,12 +3356,18 @@ msgid ""
"know which key was used because this signing key might establish\n"
"a trust connection through another already certified key."
msgstr ""
"Questa firma non può essere verificata perchè non hai la chiave "
"corrispondente.\n"
"Dovresti rimandare la sua cancellazione finchè non saprai quale chiave è "
"stata\n"
"usata perchè questa chiave potrebbe stabilire una connessione di fiducia\n"
"attraverso una chiave già certificata."
#: g10/helptext.c:189
msgid ""
"The signature is not valid. It does make sense to remove it from\n"
"your keyring."
msgstr ""
msgstr "La firma non è valida. Ha senso rimuoverla dal tuo portachiavi."
#: g10/helptext.c:193
msgid ""
@ -3359,30 +3377,40 @@ msgid ""
"only if this self-signature is for some reason not valid and\n"
"a second one is available."
msgstr ""
"Questa è una firma che collega l'user id alla chiave. Solitamente non è una\n"
"buona idea rimuovere questo tipo di firma. In realtà GnuPG potrebbe non "
"essere\n"
"più in grado di usare questa chiave. Quindi fallo solo se questa autofirma "
"non\n"
"è valida per qualche ragione e ne è disponibile un'altra."
#: g10/helptext.c:202
msgid ""
"Please enter the passhrase; this is a secret sentence \n"
" Blurb, blurb,.... "
msgstr ""
"Inserisci la passphrase, cioè una frase segreta.\n"
" bla, bla, bla..."
#: g10/helptext.c:209
msgid "Please repeat the last passphrase, so you are sure what you typed in."
msgstr ""
msgstr "Ripeti l'ultima passphrase per essere sicuro di cosa hai scritto."
#: g10/helptext.c:213
msgid "Give the name fo the file to which the signature applies"
msgstr ""
msgid "Give the name of the file to which the signature applies"
msgstr "Inserisci il nome del file a cui si riferisce la firma."
#: g10/helptext.c:218
msgid "Answer \"yes\" if it is okay to overwrite the file"
msgstr ""
msgstr "Rispondi \"si\" se va bene sovrascrivere il file."
#: g10/helptext.c:223
msgid ""
"Please enter a new filename. If you just hit RETURN the default\n"
"file (which is shown in brackets) will be used."
msgstr ""
"Inserisci il nuovo nome del file. Se premi INVIO sarà usato il nome\n"
"predefinito (quello indicato tra parentesi)."
#: g10/helptext.c:237
msgid "No help available"
@ -3393,153 +3421,3 @@ msgstr "Non
msgid "No help available for `%s'"
msgstr "Non è disponibile un aiuto per `%s'"
#~ msgid "edit_ownertrust.value"
#~ msgstr ""
#~ "È compito tuo assegnare un valore; questo valore non sarà mai esportato a\n"
#~ "terzi. Ci serve per implementare il web-of-trust; non ha nulla a che fare\n"
#~ "con il web-of-certificates (creato implicitamente)."
#~ msgid "revoked_key.override"
#~ msgstr "Se vuoi usare comunque questa chiave revocata, rispondi \"sì\"."
#~ msgid "untrusted_key.override"
#~ msgstr "Se vuoi usare comunque questa chiave non fidata, rispondi \"sì\"."
#~ msgid "pklist.user_id.enter"
#~ msgstr ""
#~ "Inserisci l'user id del destinatario a cui vuoi mandare il messaggio."
#~ msgid "keygen.algo"
#~ msgstr ""
#~ "Seleziona l'algoritmo da usare.\n"
#~ "DSA (alias DSS) è un algoritmo usabile solo per firmare. È l'algoritmo\n"
#~ "suggerito perché verificare firme DSA è molto più veloce di quelle ElGamal.\n"
#~ "ElGamal è un algoritmo usabile per firmare e cifrare.\n"
#~ "OpenPGP distingue tra due versioni di questo algoritmo: una solo per "
#~ "firmare\n"
#~ "e una per firmare e cifrare. In realtà è sempre lo stesso, per creare firme\n"
#~ "sicure per la cifratura occorre scegliere in un modo particolare alcuni\n"
#~ "parametri: questo programma lo fa ma non è richiesto che altre "
#~ "implementazioni\n"
#~ "di OpenPGP capiscano la versione per firmare e cifrare.\n"
#~ "La prima chiave (primaria) deve sempre essere una chiave in grado di "
#~ "firmare;\n"
#~ "questo è il motivo per cui le chiavi ElGamal solo per cifrare sono\n"
#~ "disabilitate."
#~ msgid "keygen.algo.elg_se"
#~ msgstr ""
#~ "Anche se queste chiavi sono definite da RFC2400 non sono suggerite perché "
#~ "non\n"
#~ "sono gestite da tutti i programmi e le firme create sono grandi e lunghe da\n"
#~ "verificare."
#~ msgid "keygen.size"
#~ msgstr "Inserisci le dimensioni della chiave"
#~ msgid "keygen.size.huge.okay"
#~ msgstr "Rispondi \"sì\" o \"no\""
#~ msgid "keygen.size.large.okay"
#~ msgstr "Rispondi \"sì\" o \"no\""
#~ msgid "keygen.valid"
#~ msgstr ""
#~ "Inserisci il valore richiesto come indicato dal prompt.\n"
#~ "È possibile inserire una data in formato ISO (YYYY-MM-DD) ma non avrai un\n"
#~ "messaggio di errore corretto: il sistema cerca di interpretare il valore\n"
#~ "dato come un intervallo."
#~ msgid "keygen.valid.okay"
#~ msgstr "Rispondi \"sì\" o \"no\""
#~ msgid "keygen.name"
#~ msgstr "Inserisci il nome del proprietario della chiave"
#~ msgid "keygen.email"
#~ msgstr "Inserisci un indirizzo di email opzionale (ma fortemente suggerito)"
#~ msgid "keygen.comment"
#~ msgstr "Inserisci un commento opzionale"
#~ msgid "keygen.userid.cmd"
#~ msgstr ""
#~ "N per cambiare il nome\n"
#~ "C per cambiare il commento\n"
#~ "E per cambiare l'indirizzo di email\n"
#~ "O per continuare con la generazione della chiave\n"
#~ "Q per abbandonare il processo di generazione della chiave"
#~ msgid "keygen.sub.okay"
#~ msgstr "Rispondi \"sì\" (o \"y\") se va bene generare la subchiave."
#~ msgid "sign_uid.okay"
#~ msgstr "Rispondi \"sì\" o \"no\""
#~ msgid "change_passwd.empty.okay"
#~ msgstr "Rispondi \"sì\" o \"no\""
#~ msgid "keyedit.save.okay"
#~ msgstr "Rispondi \"sì\" o \"no\""
#~ msgid "keyedit.cancel.okay"
#~ msgstr "Rispondi \"sì\" o \"no\""
#~ msgid "keyedit.sign_all.okay"
#~ msgstr "Rispondi \"sì\" se vuoi firmare TUTTI gli user id."
#~ msgid "keyedit.remove.uid.okay"
#~ msgstr ""
#~ "Rispondi \"sì\" se vuoi davvero cancellare questo user id.\n"
#~ "Tutti i certificati saranno persi!"
#~ msgid "keyedit.remove.subkey.okay"
#~ msgstr "Rispondi \"sì\" se va bene cancellare la subchiave"
#~ msgid "keyedit.delsig.valid"
#~ msgstr ""
#~ "Questa è una firma valida per la chiave. Normalmente non vorresti "
#~ "cancellare\n"
#~ "questa firma perchè può essere importante per stabilire una connessione di\n"
#~ "fiducia alla chiave o a un'altra chiave certificata da questa chiave."
#~ msgid "keyedit.delsig.unknown"
#~ msgstr ""
#~ "Questa firma non può essere verificata perchè non hai la chiave "
#~ "corrispondente.\n"
#~ "Dovresti rimandare la sua cancellazione finchè non saprai quale chiave è "
#~ "stata\n"
#~ "usata perchè questa chiave potrebbe stabilire una connessione di fiducia\n"
#~ "attraverso una chiave già certificata."
#~ msgid "keyedit.delsig.invalid"
#~ msgstr "Questa firma non è valida. Ha senso rimuoverla dal tuo portachiavi."
#~ msgid "keyedit.delsig.selfsig"
#~ msgstr ""
#~ "Questa è la firma che collega l'user id alla chiave. Solitamente non è una\n"
#~ "buona idea rimuovere questo tipo di firme. In realtà GnuPG potrebbe non "
#~ "essere\n"
#~ "più in grado di usare questa chiave. Quindi fallo solo se questa autofirma "
#~ "non\n"
#~ "è valida per qualche ragione e ne è disponibile un'altra."
#~ msgid "passphrase.enter"
#~ msgstr ""
#~ "Inserisci la passphrase, cioè una frase segreta.\n"
#~ "bla, bla, bla..."
#~ msgid "passphrase.repeat"
#~ msgstr "Ripeti l'ultima passphrase per essere sicuro di cosa hai scritto."
#~ msgid "detached_signature.filename"
#~ msgstr "Inserisci il nome del file a cui la firma si riferisce."
#~ msgid "openfile.overwrite.okay"
#~ msgstr "Rispondi \"sì\" se va bene sovrascrivere il file."
#~ msgid "openfile.askoutname"
#~ msgstr ""
#~ "Inserisci il nuovo nome del file.\n"
#~ "Se premi INVIO sarà usato il nome predefinito (quello indicato tra "
#~ "parentesi)."

View File

@ -3437,7 +3437,7 @@ msgstr ""
"Proszę powrótrzyć wyrażenie przejściowe, aby upewnić się że nie było pomyłki."
#: g10/helptext.c:213
msgid "Give the name fo the file to which the signature applies"
msgid "Give the name of the file to which the signature applies"
msgstr "Nazwa pliku którego dotyczy podpis"
#: g10/helptext.c:218

View File

@ -3435,7 +3435,7 @@ msgstr ""
"digitou."
#: g10/helptext.c:213
msgid "Give the name fo the file to which the signature applies"
msgid "Give the name of the file to which the signature applies"
msgstr "Dê o nome para o arquivo ao qual a assinatura se aplica"
#: g10/helptext.c:218

3413
po/pt_PT.po Normal file

File diff suppressed because it is too large Load Diff

View File

@ -3500,7 +3500,7 @@ msgid "Please repeat the last passphrase, so you are sure what you typed in."
msgstr ""
#: g10/helptext.c:213
msgid "Give the name fo the file to which the signature applies"
msgid "Give the name of the file to which the signature applies"
msgstr ""
#: g10/helptext.c:218

View File

@ -1,3 +1,8 @@
Wed Sep 15 16:22:17 CEST 1999 Werner Koch <wk@isil.d.shuttle.de>
* gnupg.spec: Add Portuguese description
Thu Sep 2 16:40:55 CEST 1999 Werner Koch <wk@isil.d.shuttle.de>

View File

@ -1,3 +1,8 @@
Wed Sep 15 16:22:17 CEST 1999 Werner Koch <wk@isil.d.shuttle.de>
* simple-gettext.c: New.
Wed Sep 1 15:30:44 CEST 1999 Werner Koch <wk@isil.d.shuttle.de>

View File

@ -8,7 +8,7 @@ noinst_LTLIBRARIES = libutil.la
libutil_la_LDFLAGS =
libutil_la_SOURCES = g10u.c logger.c fileutil.c miscutil.c strgutil.c \
ttyio.c argparse.c memory.c secmem.c errors.c iobuf.c \
dotlock.c http.c
dotlock.c http.c simple-gettext.c
http-test: http.c

View File

@ -844,7 +844,7 @@ show_version()
/* additional program info */
for(i=30; i < 40; i++ )
if( (s=strusage(i)) )
fputs(s, stdout);
fputs( (const byte*)s, stdout);
fflush(stdout);
}

468
util/simple-gettext.c Normal file
View File

@ -0,0 +1,468 @@
/* simple-gettext.c - a simplified version of gettext.
* Copyright (C) 1995, 1996, 1997, 1998, 1999 Free Software Foundation, Inc.
*
* This file is part of GnuPG.
*
* GnuPG is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
*
* GnuPG is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
*/
/* This is a simplified version of gettext written by Ulrich Drepper.
* It is used for the Win32 version of GnuPG becuase all the overhead
* of gettext is not needed and we have to do some special Win32 stuff.
* I decided that this is far easier than to tweak gettext for the special
* cases (I tried it but it is a lot of code). wk 15.09.99
*/
#include <config.h>
#ifdef USE_SIMPLE_GETTEXT
#ifndef __MINGW32__
#error This file can only be used with MinGW32
#endif
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <ctype.h>
#include <errno.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <windows.h>
#include "types.h"
#include "util.h"
/* The magic number of the GNU message catalog format. */
#define MAGIC 0x950412de
#define MAGIC_SWAPPED 0xde120495
/* Revision number of the currently used .mo (binary) file format. */
#define MO_REVISION_NUMBER 0
/* Header for binary .mo file format. */
struct mo_file_header
{
/* The magic number. */
u32 magic;
/* The revision number of the file format. */
u32 revision;
/* The number of strings pairs. */
u32 nstrings;
/* Offset of table with start offsets of original strings. */
u32 orig_tab_offset;
/* Offset of table with start offsets of translation strings. */
u32 trans_tab_offset;
/* Size of hashing table. */
u32 hash_tab_size;
/* Offset of first hashing entry. */
u32 hash_tab_offset;
};
struct string_desc
{
/* Length of addressed string. */
u32 length;
/* Offset of string in file. */
u32 offset;
};
struct loaded_domain
{
char *data;
int must_swap;
u32 nstrings;
char *mapped;
struct string_desc *orig_tab;
struct string_desc *trans_tab;
u32 hash_size;
u32 *hash_tab;
};
static struct loaded_domain *the_domain;
static __inline__ u32
do_swap_u32( u32 i )
{
return (i << 24) | ((i & 0xff00) << 8) | ((i >> 8) & 0xff00) | (i >> 24);
}
#define SWAPIT(flag, data) ((flag) ? do_swap_u32(data) : (data) )
/* We assume to have `unsigned long int' value with at least 32 bits. */
#define HASHWORDBITS 32
/* The so called `hashpjw' function by P.J. Weinberger
[see Aho/Sethi/Ullman, COMPILERS: Principles, Techniques and Tools,
1986, 1987 Bell Telephone Laboratories, Inc.] */
static __inline__ ulong
hash_string( const char *str_param )
{
unsigned long int hval, g;
const char *str = str_param;
hval = 0;
while (*str != '\0')
{
hval <<= 4;
hval += (unsigned long int) *str++;
g = hval & ((unsigned long int) 0xf << (HASHWORDBITS - 4));
if (g != 0)
{
hval ^= g >> (HASHWORDBITS - 8);
hval ^= g;
}
}
return hval;
}
static struct loaded_domain *
load_domain( const char *filename )
{
FILE *fp;
size_t size;
struct stat st;
struct mo_file_header *data = NULL;
struct loaded_domain *domain = NULL;
size_t to_read;
char *read_ptr;
fp = fopen( filename, "rb" );
if( !fp )
return NULL; /* can't open the file */
/* we must know about the size of the file */
if( fstat( fileno(fp ), &st )
|| (size = (size_t)st.st_size) != st.st_size
|| size < sizeof (struct mo_file_header) ) {
fclose( fp );
return NULL;
}
data = malloc( size );
if( !data ) {
fclose( fp );
return NULL; /* out of memory */
}
to_read = size;
read_ptr = (char *) data;
do {
long int nb = fread( read_ptr, 1, to_read, fp );
if( nb < to_read ) {
fclose (fp);
free(data);
return NULL; /* read error */
}
read_ptr += nb;
to_read -= nb;
} while( to_read > 0 );
fclose (fp);
/* Using the magic number we can test whether it really is a message
* catalog file. */
if( data->magic != MAGIC && data->magic != MAGIC_SWAPPED ) {
/* The magic number is wrong: not a message catalog file. */
free( data );
return NULL;
}
domain = calloc( 1, sizeof *domain );
if( !domain ) {
free( data );
return NULL;
}
domain->data = (char *) data;
domain->must_swap = data->magic != MAGIC;
/* Fill in the information about the available tables. */
switch( SWAPIT(domain->must_swap, data->revision) ) {
case 0:
domain->nstrings = SWAPIT(domain->must_swap, data->nstrings);
domain->orig_tab = (struct string_desc *)
((char *) data + SWAPIT(domain->must_swap, data->orig_tab_offset));
domain->trans_tab = (struct string_desc *)
((char *) data + SWAPIT(domain->must_swap, data->trans_tab_offset));
domain->hash_size = SWAPIT(domain->must_swap, data->hash_tab_size);
domain->hash_tab = (u32 *)
((char *) data + SWAPIT(domain->must_swap, data->hash_tab_offset));
break;
default: /* This is an invalid revision. */
free( data );
free( domain );
return NULL;
}
/* allocate an array to keep track of code page mappings */
domain->mapped = calloc( 1, domain->nstrings );
if( !domain->mapped ) {
free( data );
free( domain );
return NULL;
}
return domain;
}
/****************
* Set the file used for translations. Pass a NULL to disable
* translation. A new filename may be set at anytime.
* WARNING: After changing the filename you shoudl not access any data
* retrieved by gettext().
*/
int
set_gettext_file( const char *filename )
{
struct loaded_domain *domain = NULL;
if( filename && *filename ) {
if( filename[0] == '/'
#ifdef HAVE_DRIVE_LETTERS
|| ( isalpha(filename[0])
&& filename[1] == ':'
&& (filename[2] == '/' || filename[2] == '\\') )
#endif
) {
/* absolute path - use it as is */
log_info("trying `%s'\n", filename );
domain = load_domain( filename );
}
else { /* relative path - append ".mo" and get DIR from env */
char *buf = NULL;
const char *s;
s = getenv("MINGW32_NLS_DIR");
if( s && (buf=malloc(strlen(s)+strlen(filename)+1+3+1)) ) {
strcpy(stpcpy(stpcpy(stpcpy( buf, s),"/"), filename),".mo");
domain = load_domain( buf );
free(buf);
}
}
if( !domain )
return -1;
}
if( the_domain ) {
free( the_domain->data );
free( the_domain->mapped );
free( the_domain );
the_domain = NULL;
}
the_domain = domain;
return NULL;
}
static const char*
get_string( struct loaded_domain *domain, u32 idx )
{
char *p = domain->data + SWAPIT(domain->must_swap,
domain->trans_tab[idx].offset);
if( !domain->mapped[idx] ) {
byte *pp;
domain->mapped[idx] = 1;
/* we assume Latin1 -> CP 850 for now */
for( pp=p; *pp; pp++ ) {
if( (*pp & 0x80) ) {
switch( *pp ) {
/* ISO-8859-1 to IBM-CP-850 */
case 0xa0: *pp = '\xff' ; break; /* nobreakspace */
case 0xa1: *pp = '\xad' ; break; /* exclamdown */
case 0xa2: *pp = '\xbd' ; break; /* cent */
case 0xa3: *pp = '\x9c' ; break; /* sterling */
case 0xa4: *pp = '\xcf' ; break; /* currency */
case 0xa5: *pp = '\xbe' ; break; /* yen */
case 0xa6: *pp = '\xdd' ; break; /* brokenbar */
case 0xa7: *pp = '\xf5' ; break; /* section */
case 0xa8: *pp = '\xf9' ; break; /* diaeresis */
case 0xa9: *pp = '\xb8' ; break; /* copyright */
case 0xaa: *pp = '\xa6' ; break; /* ordfeminine */
case 0xab: *pp = '\xae' ; break; /* guillemotleft */
case 0xac: *pp = '\xaa' ; break; /* notsign */
case 0xad: *pp = '\xf0' ; break; /* hyphen */
case 0xae: *pp = '\xa9' ; break; /* registered */
case 0xaf: *pp = '\xee' ; break; /* macron */
case 0xb0: *pp = '\xf8' ; break; /* degree */
case 0xb1: *pp = '\xf1' ; break; /* plusminus */
case 0xb2: *pp = '\xfd' ; break; /* twosuperior */
case 0xb3: *pp = '\xfc' ; break; /* threesuperior */
case 0xb4: *pp = '\xef' ; break; /* acute */
case 0xb5: *pp = '\xe6' ; break; /* mu */
case 0xb6: *pp = '\xf4' ; break; /* paragraph */
case 0xb7: *pp = '\xfa' ; break; /* periodcentered */
case 0xb8: *pp = '\xf7' ; break; /* cedilla */
case 0xb9: *pp = '\xfb' ; break; /* onesuperior */
case 0xba: *pp = '\xa7' ; break; /* masculine */
case 0xbb: *pp = '\xaf' ; break; /* guillemotright */
case 0xbc: *pp = '\xac' ; break; /* onequarter */
case 0xbd: *pp = '\xab' ; break; /* onehalf */
case 0xbe: *pp = '\xf3' ; break; /* threequarters */
case 0xbf: *pp = '\xa8' ; break; /* questiondown */
case 0xc0: *pp = '\xb7' ; break; /* Agrave */
case 0xc1: *pp = '\xb5' ; break; /* Aacute */
case 0xc2: *pp = '\xb6' ; break; /* Acircumflex */
case 0xc3: *pp = '\xc7' ; break; /* Atilde */
case 0xc4: *pp = '\x8e' ; break; /* Adiaeresis */
case 0xc5: *pp = '\x8f' ; break; /* Aring */
case 0xc6: *pp = '\x92' ; break; /* AE */
case 0xc7: *pp = '\x80' ; break; /* Ccedilla */
case 0xc8: *pp = '\xd4' ; break; /* Egrave */
case 0xc9: *pp = '\x90' ; break; /* Eacute */
case 0xca: *pp = '\xd2' ; break; /* Ecircumflex */
case 0xcb: *pp = '\xd3' ; break; /* Ediaeresis */
case 0xcc: *pp = '\xde' ; break; /* Igrave */
case 0xcd: *pp = '\xd6' ; break; /* Iacute */
case 0xce: *pp = '\xd7' ; break; /* Icircumflex */
case 0xcf: *pp = '\xd8' ; break; /* Idiaeresis */
case 0xd0: *pp = '\xd1' ; break; /* Eth */
case 0xd1: *pp = '\xa5' ; break; /* Ntilde */
case 0xd2: *pp = '\xe3' ; break; /* Ograve */
case 0xd3: *pp = '\xe0' ; break; /* Oacute */
case 0xd4: *pp = '\xe2' ; break; /* Ocircumflex */
case 0xd5: *pp = '\xe5' ; break; /* Otilde */
case 0xd6: *pp = '\x99' ; break; /* Odiaeresis */
case 0xd7: *pp = '\x9e' ; break; /* multiply */
case 0xd8: *pp = '\x9d' ; break; /* Ooblique */
case 0xd9: *pp = '\xeb' ; break; /* Ugrave */
case 0xda: *pp = '\xe9' ; break; /* Uacute */
case 0xdb: *pp = '\xea' ; break; /* Ucircumflex */
case 0xdc: *pp = '\x9a' ; break; /* Udiaeresis */
case 0xdd: *pp = '\xed' ; break; /* Yacute */
case 0xde: *pp = '\xe8' ; break; /* Thorn */
case 0xdf: *pp = '\xe1' ; break; /* ssharp */
case 0xe0: *pp = '\x85' ; break; /* agrave */
case 0xe1: *pp = '\xa0' ; break; /* aacute */
case 0xe2: *pp = '\x83' ; break; /* acircumflex */
case 0xe3: *pp = '\xc6' ; break; /* atilde */
case 0xe4: *pp = '\x84' ; break; /* adiaeresis */
case 0xe5: *pp = '\x86' ; break; /* aring */
case 0xe6: *pp = '\x91' ; break; /* ae */
case 0xe7: *pp = '\x87' ; break; /* ccedilla */
case 0xe8: *pp = '\x8a' ; break; /* egrave */
case 0xe9: *pp = '\x82' ; break; /* eacute */
case 0xea: *pp = '\x88' ; break; /* ecircumflex */
case 0xeb: *pp = '\x89' ; break; /* ediaeresis */
case 0xec: *pp = '\x8d' ; break; /* igrave */
case 0xed: *pp = '\xa1' ; break; /* iacute */
case 0xee: *pp = '\x8c' ; break; /* icircumflex */
case 0xef: *pp = '\x8b' ; break; /* idiaeresis */
case 0xf0: *pp = '\xd0' ; break; /* eth */
case 0xf1: *pp = '\xa4' ; break; /* ntilde */
case 0xf2: *pp = '\x95' ; break; /* ograve */
case 0xf3: *pp = '\xa2' ; break; /* oacute */
case 0xf4: *pp = '\x93' ; break; /* ocircumflex */
case 0xf5: *pp = '\xe4' ; break; /* otilde */
case 0xf6: *pp = '\x94' ; break; /* odiaeresis */
case 0xf7: *pp = '\xf6' ; break; /* division */
case 0xf8: *pp = '\x9b' ; break; /* oslash */
case 0xf9: *pp = '\x97' ; break; /* ugrave */
case 0xfa: *pp = '\xa3' ; break; /* uacute */
case 0xfb: *pp = '\x96' ; break; /* ucircumflex */
case 0xfc: *pp = '\x81' ; break; /* udiaeresis */
case 0xfd: *pp = '\xec' ; break; /* yacute */
case 0xfe: *pp = '\xe7' ; break; /* thorn */
case 0xff: *pp = '\x98' ; break; /* ydiaeresis */
default : break;
}
}
}
}
return (const char*)p;
}
const char *
gettext( const char *msgid )
{
struct loaded_domain *domain;
size_t act = 0;
size_t top, bottom;
if( !(domain = the_domain) )
goto not_found;
/* Locate the MSGID and its translation. */
if( domain->hash_size > 2 && domain->hash_tab ) {
/* Use the hashing table. */
u32 len = strlen (msgid);
u32 hash_val = hash_string (msgid);
u32 idx = hash_val % domain->hash_size;
u32 incr = 1 + (hash_val % (domain->hash_size - 2));
u32 nstr = SWAPIT (domain->must_swap, domain->hash_tab[idx]);
if ( !nstr ) /* Hash table entry is empty. */
goto not_found;
if( SWAPIT(domain->must_swap,
domain->orig_tab[nstr - 1].length) == len
&& !strcmp( msgid,
domain->data + SWAPIT(domain->must_swap,
domain->orig_tab[nstr - 1].offset)) )
return get_string( domain, nstr - 1 );
for(;;) {
if (idx >= domain->hash_size - incr)
idx -= domain->hash_size - incr;
else
idx += incr;
nstr = SWAPIT(domain->must_swap, domain->hash_tab[idx]);
if( !nstr )
goto not_found; /* Hash table entry is empty. */
if ( SWAPIT(domain->must_swap,
domain->orig_tab[nstr - 1].length) == len
&& !strcmp (msgid,
domain->data + SWAPIT(domain->must_swap,
domain->orig_tab[nstr - 1].offset)))
return get_string( domain, nstr-1 );
}
/* NOTREACHED */
}
/* Now we try the default method: binary search in the sorted
array of messages. */
bottom = 0;
top = domain->nstrings;
while( bottom < top ) {
int cmp_val;
act = (bottom + top) / 2;
cmp_val = strcmp(msgid, domain->data
+ SWAPIT(domain->must_swap,
domain->orig_tab[act].offset));
if (cmp_val < 0)
top = act;
else if (cmp_val > 0)
bottom = act + 1;
else
return get_string( domain, act );
}
not_found:
return msgid;
}
#endif /* USE_SIMPLE_GETTEXT */

View File

@ -107,6 +107,23 @@ init_ttyfp(void)
SetConsoleMode(con.in, DEF_INPMODE );
SetConsoleMode(con.out, DEF_OUTMODE );
#warning DEBUG CODE
{
unsigned int cp1, cp2;
cp1 = GetConsoleCP();
cp2 = GetConsoleOutputCP();
log_info("InputCP=%u OutputCP=%u\n", cp1, cp2 );
if( !SetConsoleOutputCP( 1252 ) )
log_info("SetConsoleOutputCP failed: %d\n", (int)GetLastError() );
cp1 = GetConsoleCP();
cp2 = GetConsoleOutputCP();
log_info("InputCP=%u OutputCP=%u after switch1\n", cp1, cp2 );
}
#elif defined(__EMX__)
ttyfp = stdout; /* Fixme: replace by the real functions: see wklib */
#else