mirror of
git://git.gnupg.org/gnupg.git
synced 2024-12-22 10:19:57 +01:00
* g10.c (i18n_init) [W32]: Pass registry key to gettext
initialization. * gpgv.c (i18n_init) [W32]: Ditto. * simple-gettext.c (set_gettext_file): Use MO files depending on the installation directory. Add new arg REGKEY.
This commit is contained in:
parent
b2d67e8039
commit
5bda87bd6e
@ -1,3 +1,7 @@
|
|||||||
|
2005-01-18 Werner Koch <wk@g10code.com>
|
||||||
|
|
||||||
|
* configure.ac (HAVE_W32_SYSTEM): Define it.
|
||||||
|
|
||||||
2005-01-18 David Shaw <dshaw@grover.jabberwocky.com>
|
2005-01-18 David Shaw <dshaw@grover.jabberwocky.com>
|
||||||
|
|
||||||
* NEWS: Note --rfc2440-text import/export-unusable-sigs and
|
* NEWS: Note --rfc2440-text import/export-unusable-sigs and
|
||||||
@ -8,6 +12,8 @@
|
|||||||
|
|
||||||
2005-01-17 Werner Koch <wk@g10code.com>
|
2005-01-17 Werner Koch <wk@g10code.com>
|
||||||
|
|
||||||
|
* README: Updated for SHA1 checksums.
|
||||||
|
|
||||||
* configure.ac: Make --without-included-zlib work as
|
* configure.ac: Make --without-included-zlib work as
|
||||||
expected. Reported by Norihiko Murase. Same for
|
expected. Reported by Norihiko Murase. Same for
|
||||||
--without-included-regex.
|
--without-included-regex.
|
||||||
|
9
NEWS
9
NEWS
@ -1,6 +1,15 @@
|
|||||||
Noteworthy changes in version 1.4.1
|
Noteworthy changes in version 1.4.1
|
||||||
-------------------------------------------------
|
-------------------------------------------------
|
||||||
|
|
||||||
|
* [W32] The algorithm for the default home directory changed:
|
||||||
|
First we look at the environment variable GNUPGHOME, if this one
|
||||||
|
is not set, we check whether the registry entry
|
||||||
|
HKCU\Software\GNU\GnuPG:HomeDir has been set and if this fails
|
||||||
|
we use a GnuPG directory below the standard application data
|
||||||
|
directory (APPDATA) of the current user. Only in the case that
|
||||||
|
this directory cannot be determined, the old default of c:\gnupg
|
||||||
|
will be used. The option --homedir still overrides all of them.
|
||||||
|
|
||||||
* New --rfc2440-text option which controls how text is handled in
|
* New --rfc2440-text option which controls how text is handled in
|
||||||
signatures. This is in response to some problems seen with
|
signatures. This is in response to some problems seen with
|
||||||
certain PGP/MIME mail clients and GnuPG version 1.4.0. More
|
certain PGP/MIME mail clients and GnuPG version 1.4.0. More
|
||||||
|
9
README
9
README
@ -54,7 +54,8 @@
|
|||||||
this. Don't skip it - this is an important step!
|
this. Don't skip it - this is an important step!
|
||||||
|
|
||||||
2) Unpack the tarball. With GNU tar you can do it this way:
|
2) Unpack the tarball. With GNU tar you can do it this way:
|
||||||
"tar xzvf gnupg-x.y.z.tar.gz"
|
"tar xzvf gnupg-x.y.z.tar.gz". If got a bzip2 compressed
|
||||||
|
tarball you need to use: "tar xjvf gnupg-x.y.z.tar.bz2".
|
||||||
|
|
||||||
3) "cd gnupg-x.y.z"
|
3) "cd gnupg-x.y.z"
|
||||||
|
|
||||||
@ -104,13 +105,13 @@
|
|||||||
|
|
||||||
|
|
||||||
b) If you don't have any of the above programs, you have to verify
|
b) If you don't have any of the above programs, you have to verify
|
||||||
the MD5 checksum:
|
the SHA1 checksum:
|
||||||
|
|
||||||
$ md5sum gnupg-x.y.z.tar.gz
|
$ sha1sum gnupg-x.y.z.tar.gz
|
||||||
|
|
||||||
This should yield an output _similar_ to this:
|
This should yield an output _similar_ to this:
|
||||||
|
|
||||||
fd9351b26b3189c1d577f0970f9dcadc gnupg-x.y.z.tar.gz
|
fd9351b26b3189c1d577f0970f9dcadc1234abcd gnupg-x.y.z.tar.gz
|
||||||
|
|
||||||
Now check that this checksum is _exactly_ the same as the one
|
Now check that this checksum is _exactly_ the same as the one
|
||||||
published via the announcement list and probably via Usenet.
|
published via the announcement list and probably via Usenet.
|
||||||
|
@ -455,6 +455,8 @@ case "${host}" in
|
|||||||
[because the Unix gettext has too much overhead on
|
[because the Unix gettext has too much overhead on
|
||||||
MingW32 systems and these systems lack Posix functions,
|
MingW32 systems and these systems lack Posix functions,
|
||||||
we use a simplified version of gettext])
|
we use a simplified version of gettext])
|
||||||
|
AC_DEFINE(HAVE_W32_SYSTEM,1,
|
||||||
|
[Defined if we run on a W32 API based system])
|
||||||
have_dosish_system=yes
|
have_dosish_system=yes
|
||||||
need_dlopen=no
|
need_dlopen=no
|
||||||
try_gettext="no"
|
try_gettext="no"
|
||||||
|
@ -1,3 +1,7 @@
|
|||||||
|
2005-01-18 Werner Koch <wk@g10code.com>
|
||||||
|
|
||||||
|
* gnupg-w32.reg: Remove the entry for the home directory.
|
||||||
|
|
||||||
2004-12-16 Werner Koch <wk@g10code.com>
|
2004-12-16 Werner Koch <wk@g10code.com>
|
||||||
|
|
||||||
* TRANSLATE: Add a note on how to send translations.
|
* TRANSLATE: Add a note on how to send translations.
|
||||||
|
@ -7,6 +7,9 @@ http://www.gnupg.org/docs-mls.html for a list of mailing lists. In
|
|||||||
particular the list gnupg-users@gnupg.org might be useful to answer
|
particular the list gnupg-users@gnupg.org might be useful to answer
|
||||||
questions - but please read the FAQ first.
|
questions - but please read the FAQ first.
|
||||||
|
|
||||||
|
Note: Due to the use of the NSIS installer, the information below are
|
||||||
|
mostly out of date.
|
||||||
|
|
||||||
Installation instructions:
|
Installation instructions:
|
||||||
--------------------------
|
--------------------------
|
||||||
1. Unpack the ZIP archive (alright, you already did this).
|
1. Unpack the ZIP archive (alright, you already did this).
|
||||||
@ -40,11 +43,6 @@ Internationalization support:
|
|||||||
(Example: "copy fr.mo c:\gnu\locale\fr\gnupg.mo")
|
(Example: "copy fr.mo c:\gnu\locale\fr\gnupg.mo")
|
||||||
4. Done.
|
4. Done.
|
||||||
|
|
||||||
Currently we only support the Codepages 437, 850 und Latin1. If you have
|
|
||||||
problems, either delete the gnupg.mo file or don't set the environment
|
|
||||||
variable
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
How to build it from the source:
|
How to build it from the source:
|
||||||
--------------------------------
|
--------------------------------
|
||||||
|
@ -1,13 +1,5 @@
|
|||||||
REGEDIT4
|
REGEDIT4
|
||||||
|
|
||||||
[HKEY_LOCAL_MACHINE\Software\GNU]
|
|
||||||
|
|
||||||
[HKEY_LOCAL_MACHINE\Software\GNU\GNUPG]
|
|
||||||
|
|
||||||
[HKEY_LOCAL_MACHINE\Software\GNU\GNUPG]
|
|
||||||
"HomeDir"="C:\\GnuPG"
|
|
||||||
"gpgProgram"="C:\\GnuPG\\gpg.exe"
|
|
||||||
|
|
||||||
|
|
||||||
[HKEY_CURRENT_USER\Control Panel\Mingw32]
|
[HKEY_CURRENT_USER\Control Panel\Mingw32]
|
||||||
|
|
||||||
|
@ -1,5 +1,15 @@
|
|||||||
|
2005-01-20 Werner Koch <wk@g10code.com>
|
||||||
|
|
||||||
|
* g10.c (i18n_init) [W32]: Pass registry key to gettext
|
||||||
|
initialization.
|
||||||
|
* gpgv.c (i18n_init) [W32]: Ditto.
|
||||||
|
|
||||||
2005-01-18 Werner Koch <wk@g10code.com>
|
2005-01-18 Werner Koch <wk@g10code.com>
|
||||||
|
|
||||||
|
* misc.c (default_homedir): New. Taken from gnupg 1.9.15.
|
||||||
|
* g10.c (main): Use it.
|
||||||
|
* gpgv.c (main): Ditto.
|
||||||
|
|
||||||
* keylist.c (public_key_list): Do a trustdb staleness check before
|
* keylist.c (public_key_list): Do a trustdb staleness check before
|
||||||
opening the keyring.
|
opening the keyring.
|
||||||
(secret_key_list): Ditto.
|
(secret_key_list): Ditto.
|
||||||
|
13
g10/g10.c
13
g10/g10.c
@ -1,6 +1,6 @@
|
|||||||
/* g10.c - The GnuPG utility (main for gpg)
|
/* g10.c - The GnuPG utility (main for gpg)
|
||||||
* Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003
|
* Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003
|
||||||
* 2004 Free Software Foundation, Inc.
|
* 2004, 2005 Free Software Foundation, Inc.
|
||||||
*
|
*
|
||||||
* This file is part of GnuPG.
|
* This file is part of GnuPG.
|
||||||
*
|
*
|
||||||
@ -839,7 +839,7 @@ static void
|
|||||||
i18n_init(void)
|
i18n_init(void)
|
||||||
{
|
{
|
||||||
#ifdef USE_SIMPLE_GETTEXT
|
#ifdef USE_SIMPLE_GETTEXT
|
||||||
set_gettext_file( PACKAGE );
|
set_gettext_file (PACKAGE, "Software\\GNU\\GnuPG");
|
||||||
#else
|
#else
|
||||||
#ifdef ENABLE_NLS
|
#ifdef ENABLE_NLS
|
||||||
setlocale( LC_ALL, "" );
|
setlocale( LC_ALL, "" );
|
||||||
@ -1673,14 +1673,7 @@ main( int argc, char **argv )
|
|||||||
set_screen_dimensions();
|
set_screen_dimensions();
|
||||||
opt.keyid_format=KF_SHORT;
|
opt.keyid_format=KF_SHORT;
|
||||||
opt.rfc2440_text=1;
|
opt.rfc2440_text=1;
|
||||||
#if defined (_WIN32)
|
set_homedir ( default_homedir () );
|
||||||
set_homedir ( read_w32_registry_string( NULL,
|
|
||||||
"Software\\GNU\\GnuPG", "HomeDir" ));
|
|
||||||
#else
|
|
||||||
set_homedir ( getenv("GNUPGHOME") );
|
|
||||||
#endif
|
|
||||||
if( !*opt.homedir )
|
|
||||||
set_homedir ( GNUPG_HOMEDIR );
|
|
||||||
|
|
||||||
#ifdef ENABLE_CARD_SUPPORT
|
#ifdef ENABLE_CARD_SUPPORT
|
||||||
# ifdef _WIN32
|
# ifdef _WIN32
|
||||||
|
15
g10/gpgv.c
15
g10/gpgv.c
@ -1,5 +1,6 @@
|
|||||||
/* gpgv.c - The GnuPG signature verify utility
|
/* gpgv.c - The GnuPG signature verify utility
|
||||||
* Copyright (C) 1998, 1999, 2000, 2001, 2002 Free Software Foundation, Inc.
|
* Copyright (C) 1998, 1999, 2000, 2001, 2002,
|
||||||
|
* 2005 Free Software Foundation, Inc.
|
||||||
*
|
*
|
||||||
* This file is part of GnuPG.
|
* This file is part of GnuPG.
|
||||||
*
|
*
|
||||||
@ -112,7 +113,7 @@ static void
|
|||||||
i18n_init(void)
|
i18n_init(void)
|
||||||
{
|
{
|
||||||
#ifdef USE_SIMPLE_GETTEXT
|
#ifdef USE_SIMPLE_GETTEXT
|
||||||
set_gettext_file( PACKAGE );
|
set_gettext_file (PACKAGE, "Software\\GNU\\GnuPG");
|
||||||
#else
|
#else
|
||||||
#ifdef ENABLE_NLS
|
#ifdef ENABLE_NLS
|
||||||
setlocale( LC_ALL, "" );
|
setlocale( LC_ALL, "" );
|
||||||
@ -141,14 +142,8 @@ main( int argc, char **argv )
|
|||||||
opt.trust_model = TM_ALWAYS;
|
opt.trust_model = TM_ALWAYS;
|
||||||
opt.batch = 1;
|
opt.batch = 1;
|
||||||
|
|
||||||
#if defined (_WIN32)
|
opt.homedir = default_homedir ();
|
||||||
opt.homedir = read_w32_registry_string( NULL, "Software\\GNU\\GnuPG", "HomeDir" );
|
|
||||||
#else
|
|
||||||
opt.homedir = getenv("GNUPGHOME");
|
|
||||||
#endif
|
|
||||||
if( !opt.homedir || !*opt.homedir ) {
|
|
||||||
opt.homedir = GNUPG_HOMEDIR;
|
|
||||||
}
|
|
||||||
tty_no_terminal(1);
|
tty_no_terminal(1);
|
||||||
tty_batchmode(1);
|
tty_batchmode(1);
|
||||||
disable_dotlock();
|
disable_dotlock();
|
||||||
|
@ -122,6 +122,9 @@ char *argsplit(char *string);
|
|||||||
int parse_options(char *str,unsigned int *options,
|
int parse_options(char *str,unsigned int *options,
|
||||||
struct parse_options *opts,int noisy);
|
struct parse_options *opts,int noisy);
|
||||||
|
|
||||||
|
char *default_homedir (void);
|
||||||
|
|
||||||
|
|
||||||
/*-- helptext.c --*/
|
/*-- helptext.c --*/
|
||||||
void display_online_help( const char *keyword );
|
void display_online_help( const char *keyword );
|
||||||
|
|
||||||
|
59
g10/misc.c
59
g10/misc.c
@ -1,6 +1,6 @@
|
|||||||
/* misc.c - miscellaneous functions
|
/* misc.c - miscellaneous functions
|
||||||
* Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003,
|
* Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003,
|
||||||
* 2004 Free Software Foundation, Inc.
|
* 2004, 2005 Free Software Foundation, Inc.
|
||||||
*
|
*
|
||||||
* This file is part of GnuPG.
|
* This file is part of GnuPG.
|
||||||
*
|
*
|
||||||
@ -40,7 +40,19 @@
|
|||||||
#ifdef _WIN32
|
#ifdef _WIN32
|
||||||
#include <time.h>
|
#include <time.h>
|
||||||
#include <process.h>
|
#include <process.h>
|
||||||
|
#include <windows.h>
|
||||||
|
#include <shlobj.h>
|
||||||
|
#ifndef CSIDL_APPDATA
|
||||||
|
#define CSIDL_APPDATA 0x001a
|
||||||
#endif
|
#endif
|
||||||
|
#ifndef CSIDL_LOCAL_APPDATA
|
||||||
|
#define CSIDL_LOCAL_APPDATA 0x001c
|
||||||
|
#endif
|
||||||
|
#ifndef CSIDL_FLAG_CREATE
|
||||||
|
#define CSIDL_FLAG_CREATE 0x8000
|
||||||
|
#endif
|
||||||
|
#endif /*_WIN32*/
|
||||||
|
|
||||||
#include "util.h"
|
#include "util.h"
|
||||||
#include "main.h"
|
#include "main.h"
|
||||||
#include "photoid.h"
|
#include "photoid.h"
|
||||||
@ -49,6 +61,8 @@
|
|||||||
#include "cardglue.h"
|
#include "cardglue.h"
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
#ifdef ENABLE_SELINUX_HACKS
|
#ifdef ENABLE_SELINUX_HACKS
|
||||||
/* A object and a global variable to keep track of files marked as
|
/* A object and a global variable to keep track of files marked as
|
||||||
secured. */
|
secured. */
|
||||||
@ -1002,3 +1016,46 @@ parse_options(char *str,unsigned int *options,
|
|||||||
|
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/* Set up the default home directory. The usual --homedir option
|
||||||
|
should be parsed later. */
|
||||||
|
char *
|
||||||
|
default_homedir (void)
|
||||||
|
{
|
||||||
|
char *dir;
|
||||||
|
|
||||||
|
dir = getenv("GNUPGHOME");
|
||||||
|
#ifdef HAVE_W32_SYSTEM
|
||||||
|
if (!dir || !*dir)
|
||||||
|
dir = read_w32_registry_string (NULL, "Software\\GNU\\GnuPG", "HomeDir");
|
||||||
|
if (!dir || !*dir)
|
||||||
|
{
|
||||||
|
char path[MAX_PATH];
|
||||||
|
|
||||||
|
/* It might be better to use LOCAL_APPDATA because this is
|
||||||
|
defined as "non roaming" and thus more likely to be kept
|
||||||
|
locally. For private keys this is desired. However, given
|
||||||
|
that many users copy private keys anyway forth and back,
|
||||||
|
using a system roaming serives might be better than to let
|
||||||
|
them do it manually. A security conscious user will anyway
|
||||||
|
use the registry entry to have better control. */
|
||||||
|
if (SHGetFolderPath(NULL, CSIDL_APPDATA|CSIDL_FLAG_CREATE,
|
||||||
|
NULL, 0, path) >= 0)
|
||||||
|
{
|
||||||
|
char *tmp = xmalloc (strlen (path) + 6 +1);
|
||||||
|
strcpy (stpcpy (tmp, path), "\\gnupg");
|
||||||
|
dir = tmp;
|
||||||
|
|
||||||
|
/* Try to create the directory if it does not yet
|
||||||
|
exists. */
|
||||||
|
if (access (dir, F_OK))
|
||||||
|
CreateDirectory (dir, NULL);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
#endif /*HAVE_W32_SYSTEM*/
|
||||||
|
if (!dir || !*dir)
|
||||||
|
dir = GNUPG_HOMEDIR;
|
||||||
|
|
||||||
|
return dir;
|
||||||
|
}
|
||||||
|
@ -22,7 +22,7 @@
|
|||||||
#define G10_I18N_H
|
#define G10_I18N_H
|
||||||
|
|
||||||
#ifdef USE_SIMPLE_GETTEXT
|
#ifdef USE_SIMPLE_GETTEXT
|
||||||
int set_gettext_file( const char *filename );
|
int set_gettext_file( const char *filename, const char *regkey );
|
||||||
const char *gettext( const char *msgid );
|
const char *gettext( const char *msgid );
|
||||||
|
|
||||||
#define _(a) gettext (a)
|
#define _(a) gettext (a)
|
||||||
|
@ -96,8 +96,13 @@ for i in ${srcdir}/po/*.po; do
|
|||||||
done
|
done
|
||||||
|
|
||||||
if makensis -version >/dev/null 2>&1 ; then
|
if makensis -version >/dev/null 2>&1 ; then
|
||||||
|
echo "invokin installer as:"
|
||||||
|
echo makensis -v3 -nocd -DVERSION="${version}" \
|
||||||
|
-DPROD_VERSION="${prod_version}" \
|
||||||
|
-DGNUPG_SRCDIR="${srcdir}" ${srcdir}/scripts/w32installer.nsi
|
||||||
makensis -v3 -nocd -DVERSION="${version}" \
|
makensis -v3 -nocd -DVERSION="${version}" \
|
||||||
-DPROD_VERSION="${prod_version}" ${srcdir}/scripts/w32installer.nsi
|
-DPROD_VERSION="${prod_version}" \
|
||||||
|
-DGNUPG_SRCDIR="${srcdir}" ${srcdir}/scripts/w32installer.nsi
|
||||||
echo "Installer created" >&2
|
echo "Installer created" >&2
|
||||||
else
|
else
|
||||||
zip -9 "gnupg-w32cli-${version}.zip" *
|
zip -9 "gnupg-w32cli-${version}.zip" *
|
||||||
|
@ -1,4 +1,5 @@
|
|||||||
; w32installer.nsi - W32 Installer definition -*- lisp -*-
|
; w32installer.nsi -*- mode: lisp; coding: latin-1; -*-
|
||||||
|
; W32 Installer script
|
||||||
; Copyright (C) 2005 Free Software Foundation, Inc.
|
; Copyright (C) 2005 Free Software Foundation, Inc.
|
||||||
;
|
;
|
||||||
; This file is free software; as a special exception the author gives
|
; This file is free software; as a special exception the author gives
|
||||||
@ -17,11 +18,8 @@
|
|||||||
; TODO:
|
; TODO:
|
||||||
; - Display credit for the installer
|
; - Display credit for the installer
|
||||||
; - Provide the location of the corresponding source
|
; - Provide the location of the corresponding source
|
||||||
; - Check for iconv.dll and optionalkly install or download it.
|
|
||||||
; - Allow inclusion of the source into the installer.
|
|
||||||
; - Translate all strings
|
; - Translate all strings
|
||||||
; - Setup the home directory and check for old (c:/gnupg located)
|
|
||||||
; versions of the program
|
|
||||||
|
|
||||||
; We use the modern UI.
|
; We use the modern UI.
|
||||||
!include "MUI.nsh"
|
!include "MUI.nsh"
|
||||||
@ -35,11 +33,10 @@ OutFile "gnupg-w32cli-${VERSION}.exe"
|
|||||||
|
|
||||||
InstallDir "$PROGRAMFILES\GNU\GnuPG"
|
InstallDir "$PROGRAMFILES\GNU\GnuPG"
|
||||||
|
|
||||||
InstallDirRegKey HKCU "Software\GNU\GnuPG" ""
|
InstallDirRegKey HKLM "Software\GNU\GnuPG" "Install Directory"
|
||||||
|
|
||||||
SetCompressor lzma
|
SetCompressor lzma
|
||||||
|
|
||||||
ReserveFile "COPYING.txt"
|
|
||||||
|
|
||||||
VIProductVersion "${PROD_VERSION}"
|
VIProductVersion "${PROD_VERSION}"
|
||||||
VIAddVersionKey "ProductName" "GNU Privacy Guard (${VERSION})"
|
VIAddVersionKey "ProductName" "GNU Privacy Guard (${VERSION})"
|
||||||
@ -62,7 +59,7 @@ VIAddVersionKey "FileVersion" "${PROD_VERSION}"
|
|||||||
; Interface Settings
|
; Interface Settings
|
||||||
; ------------------
|
; ------------------
|
||||||
|
|
||||||
!define MUI_ABORTWARNING
|
;;;!define MUI_ABORTWARNING
|
||||||
!define MUI_FINISHPAGE_NOAUTOCLOSE
|
!define MUI_FINISHPAGE_NOAUTOCLOSE
|
||||||
!define MUI_UNFINISHPAGE_NOAUTOCLOSE
|
!define MUI_UNFINISHPAGE_NOAUTOCLOSE
|
||||||
|
|
||||||
@ -95,15 +92,18 @@ VIAddVersionKey "FileVersion" "${PROD_VERSION}"
|
|||||||
|
|
||||||
!insertmacro MUI_PAGE_LICENSE "COPYING.txt"
|
!insertmacro MUI_PAGE_LICENSE "COPYING.txt"
|
||||||
|
|
||||||
|
;;Page custom PageSelectOptions
|
||||||
|
|
||||||
!insertmacro MUI_PAGE_COMPONENTS
|
!insertmacro MUI_PAGE_COMPONENTS
|
||||||
|
|
||||||
!insertmacro MUI_PAGE_DIRECTORY
|
!insertmacro MUI_PAGE_DIRECTORY
|
||||||
!insertmacro MUI_PAGE_INSTFILES
|
!insertmacro MUI_PAGE_INSTFILES
|
||||||
|
|
||||||
!define MUI_FINISHPAGE_SHOWREADME "README.txt"
|
!define MUI_FINISHPAGE_SHOWREADME "README.txt"
|
||||||
!define MUI_FINISHPAGE_SHOWREADME_TEXT "$(T_ShowReadme)"
|
!define MUI_FINISHPAGE_SHOWREADME_TEXT "$(T_ShowReadme)"
|
||||||
!define MUI_FINISHPAGE_LINK "Goto the GnuPG website"
|
!define MUI_FINISHPAGE_LINK \
|
||||||
!define MUI_FINISHPAGE_LINK_LOCATION "http://www.gnupg.org"
|
"Visit the GnuPG website for latest news and support"
|
||||||
|
!define MUI_FINISHPAGE_LINK_LOCATION "http://www.gnupg.org/"
|
||||||
!insertmacro MUI_PAGE_FINISH
|
!insertmacro MUI_PAGE_FINISH
|
||||||
|
|
||||||
|
|
||||||
@ -122,9 +122,17 @@ VIAddVersionKey "FileVersion" "${PROD_VERSION}"
|
|||||||
; Installer Sections
|
; Installer Sections
|
||||||
; ------------------
|
; ------------------
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
;InstType "full"
|
;InstType "full"
|
||||||
;InstType "minimal"
|
;InstType "minimal"
|
||||||
|
|
||||||
|
!insertmacro MUI_RESERVEFILE_LANGDLL
|
||||||
|
;;!insertmacro MUI_RESERVEFILE_INSTALLOPTIONS
|
||||||
|
;;ReserveFile "w32inst-opt.ini"
|
||||||
|
ReserveFile "COPYING.txt"
|
||||||
|
|
||||||
|
|
||||||
;----------------------
|
;----------------------
|
||||||
Section "Base" SecBase
|
Section "Base" SecBase
|
||||||
; SectionIn 1 2 RO
|
; SectionIn 1 2 RO
|
||||||
@ -132,26 +140,41 @@ Section "Base" SecBase
|
|||||||
|
|
||||||
SetOutPath "$INSTDIR"
|
SetOutPath "$INSTDIR"
|
||||||
|
|
||||||
File "README.txt"
|
|
||||||
File "README.W32"
|
|
||||||
File "COPYING.txt"
|
|
||||||
File "gpg.exe"
|
File "gpg.exe"
|
||||||
File "gpgkeys_finger.exe"
|
File "gpgkeys_finger.exe"
|
||||||
File "gpgkeys_hkp.exe"
|
File "gpgkeys_hkp.exe"
|
||||||
File "gpgkeys_http.exe"
|
File "gpgkeys_http.exe"
|
||||||
File "gpgkeys_ldap.exe"
|
File "gpgkeys_ldap.exe"
|
||||||
File "*.mo"
|
|
||||||
|
|
||||||
WriteRegStr HKCU "Software\GNU\GnuPG" "" $INSTDIR
|
SetOutPath "$INSTDIR\Doc"
|
||||||
|
|
||||||
|
File "README.txt"
|
||||||
|
File "README.W32"
|
||||||
|
File "COPYING.txt"
|
||||||
|
|
||||||
|
Call InstallIconv
|
||||||
|
|
||||||
|
WriteRegStr HKLM "Software\GNU\GnuPG" "Install Directory" $INSTDIR
|
||||||
|
|
||||||
WriteUninstaller "$INSTDIR\Uninstall.exe"
|
WriteUninstaller "$INSTDIR\Uninstall.exe"
|
||||||
|
|
||||||
SectionEnd ; Section Base
|
SectionEnd ; Section Base
|
||||||
|
|
||||||
|
;----------------------
|
||||||
|
Section "NLS" SecNLS
|
||||||
|
; SectionIn 1
|
||||||
|
|
||||||
|
SetOutPath "$INSTDIR\gnupg.nls"
|
||||||
|
|
||||||
|
File "*.mo"
|
||||||
|
|
||||||
|
SectionEnd ; Section NLS
|
||||||
|
|
||||||
;------------------------
|
;------------------------
|
||||||
Section "Tools" SecTools
|
Section "Tools" SecTools
|
||||||
; SectionIn 1
|
; SectionIn 1
|
||||||
|
|
||||||
|
SetOutPath "$INSTDIR"
|
||||||
File "gpgsplit.exe"
|
File "gpgsplit.exe"
|
||||||
File "gpgv.exe"
|
File "gpgv.exe"
|
||||||
|
|
||||||
@ -161,6 +184,8 @@ SectionEnd ; Section Tools
|
|||||||
Section "Documentation" SecDoc
|
Section "Documentation" SecDoc
|
||||||
; SectionIn 1
|
; SectionIn 1
|
||||||
|
|
||||||
|
SetOutPath "$INSTDIR\Doc"
|
||||||
|
|
||||||
File "gnupg.man"
|
File "gnupg.man"
|
||||||
File "gpg.man"
|
File "gpg.man"
|
||||||
File "gpgv.man"
|
File "gpgv.man"
|
||||||
@ -174,6 +199,8 @@ SectionEnd ; Section Documentation
|
|||||||
!ifdef WITH_SOURCE
|
!ifdef WITH_SOURCE
|
||||||
Section "Source" SecSource
|
Section "Source" SecSource
|
||||||
|
|
||||||
|
SetOutPath "$INSTDIR\Src"
|
||||||
|
|
||||||
; Note that we include the uncompressed tarball because this allows
|
; Note that we include the uncompressed tarball because this allows
|
||||||
; far better compression results for the distribution. We might
|
; far better compression results for the distribution. We might
|
||||||
; want to compress it again after installation.
|
; want to compress it again after installation.
|
||||||
@ -183,67 +210,41 @@ SectionEnd ; Section Source
|
|||||||
!endif
|
!endif
|
||||||
|
|
||||||
|
|
||||||
;----------------------
|
|
||||||
Section "-Finish"
|
|
||||||
|
|
||||||
ClearErrors
|
|
||||||
GetDllVersion "iconv.dll" $R0 $R1
|
|
||||||
IfErrors 0 +3
|
|
||||||
MessageBox MB_OK \
|
|
||||||
"iconv.dll is not installed.$\r$\n \
|
|
||||||
It is highy suggested to install \
|
|
||||||
this DLL to help with character set conversion.$\r$\n$\r$\n \
|
|
||||||
See http://www.gnupg.org/download/iconv.html for instructions."
|
|
||||||
Return
|
|
||||||
|
|
||||||
IntOp $R2 $R0 / 0x00010000
|
|
||||||
IntOp $R3 $R0 & 0x0000FFFF
|
|
||||||
IntOp $R4 $R1 / 0x00010000
|
|
||||||
IntOp $R5 $R1 & 0x0000FFFF
|
|
||||||
StrCpy $0 "$R2.$R3.$R4.$R5"
|
|
||||||
|
|
||||||
DetailPrint "iconv.dll version is $0"
|
|
||||||
|
|
||||||
IntCmp $R2 1 0 IconvTooOld
|
|
||||||
IntCmp $R3 9 0 IconvTooOld
|
|
||||||
goto +3
|
|
||||||
IconvTooOld:
|
|
||||||
MessageBox MB_OK \
|
|
||||||
"The installed iconv.dll is too old.$\r$\n \
|
|
||||||
We require at least version 1.9.0.0 (installed: $0).$\r$\n \
|
|
||||||
It is highly suggested to install an updated DLL to help \
|
|
||||||
with character set conversion.$\r$\n$\r$\n \
|
|
||||||
See http://www.gnupg.org/download/iconv.html for instructions."
|
|
||||||
|
|
||||||
|
|
||||||
SectionEnd
|
|
||||||
|
|
||||||
|
|
||||||
;------------------
|
;------------------
|
||||||
Section "Uninstall"
|
Section "Uninstall"
|
||||||
|
|
||||||
Delete "$INSTDIR\README.txt"
|
|
||||||
Delete "$INSTDIR\README.W32"
|
|
||||||
Delete "$INSTDIR\COPYING.txt"
|
|
||||||
Delete "$INSTDIR\gpg.exe"
|
Delete "$INSTDIR\gpg.exe"
|
||||||
Delete "$INSTDIR\gpgkeys_finger.exe"
|
Delete "$INSTDIR\gpgkeys_finger.exe"
|
||||||
Delete "$INSTDIR\gpgkeys_hkp.exe"
|
Delete "$INSTDIR\gpgkeys_hkp.exe"
|
||||||
Delete "$INSTDIR\gpgkeys_http.exe"
|
Delete "$INSTDIR\gpgkeys_http.exe"
|
||||||
Delete "$INSTDIR\gpgkeys_ldap.exe"
|
Delete "$INSTDIR\gpgkeys_ldap.exe"
|
||||||
Delete "$INSTDIR\*.mo"
|
|
||||||
|
Delete "$INSTDIR\Doc\README.txt"
|
||||||
|
Delete "$INSTDIR\Doc\README.W32"
|
||||||
|
Delete "$INSTDIR\Doc\COPYING.txt"
|
||||||
|
|
||||||
|
Delete "$INSTDIR\iconv.dll"
|
||||||
|
|
||||||
|
Delete "$INSTDIR\gnupg.nls\*.mo"
|
||||||
|
|
||||||
Delete "$INSTDIR\gpgsplit.exe"
|
Delete "$INSTDIR\gpgsplit.exe"
|
||||||
Delete "$INSTDIR\gpgv.exe"
|
Delete "$INSTDIR\gpgv.exe"
|
||||||
Delete "$INSTDIR\gnupg.man"
|
|
||||||
Delete "$INSTDIR\gpg.man"
|
Delete "$INSTDIR\Doc\gnupg.man"
|
||||||
Delete "$INSTDIR\gpgv.man"
|
Delete "$INSTDIR\Doc\gpg.man"
|
||||||
Delete "$INSTDIR\NEWS.txt"
|
Delete "$INSTDIR\Doc\gpgv.man"
|
||||||
Delete "$INSTDIR\FAQ.txt"
|
Delete "$INSTDIR\Doc\NEWS.txt"
|
||||||
|
Delete "$INSTDIR\Doc\FAQ.txt"
|
||||||
|
|
||||||
Delete "$INSTDIR\Uninstall.exe"
|
Delete "$INSTDIR\Uninstall.exe"
|
||||||
|
|
||||||
|
RMDir "$INSTDIR\Doc"
|
||||||
|
RMDir "$INSTDIR\Src"
|
||||||
|
RMDir "$INSTDIR\gnupg.nls"
|
||||||
RMDir "$INSTDIR"
|
RMDir "$INSTDIR"
|
||||||
|
|
||||||
DeleteRegKey /ifempty HKCU "Software\GNU\GnuPG"
|
DeleteRegValue HKLM "Software\GNU\GnuPG" "Install Directory"
|
||||||
|
DeleteRegKey /ifempty HKLM "Software\GNU\GnuPG"
|
||||||
|
|
||||||
SectionEnd ; Uninstall
|
SectionEnd ; Uninstall
|
||||||
|
|
||||||
@ -256,6 +257,9 @@ Function .onInit
|
|||||||
|
|
||||||
!insertmacro MUI_LANGDLL_DISPLAY
|
!insertmacro MUI_LANGDLL_DISPLAY
|
||||||
|
|
||||||
|
; !insertmacro MUI_INSTALLOPTIONS_EXTRACT_AS \
|
||||||
|
; "${GNUPG_SRCDIR}/scripts/w32inst-opt.ini" "w32inst-opt.ini"
|
||||||
|
|
||||||
FunctionEnd
|
FunctionEnd
|
||||||
|
|
||||||
|
|
||||||
@ -266,6 +270,53 @@ Function un.onInit
|
|||||||
FunctionEnd
|
FunctionEnd
|
||||||
|
|
||||||
|
|
||||||
|
;;Function PageSelectOptions
|
||||||
|
;;
|
||||||
|
;; ; Setup a default for the langage to install. Take it form the registry
|
||||||
|
;;
|
||||||
|
;; !insertmacro MUI_HEADER_TEXT "Install Options" "Languages"
|
||||||
|
;; !insertmacro MUI_INSTALLOPTIONS_DISPLAY "w32inst-opt.ini"
|
||||||
|
;;
|
||||||
|
;; ; Save away the language to install
|
||||||
|
;;
|
||||||
|
;;FunctionEnd
|
||||||
|
;;
|
||||||
|
|
||||||
|
|
||||||
|
; Install iconv.dll if it has not been installed on the system.
|
||||||
|
Function InstallIconv
|
||||||
|
|
||||||
|
; First delete a iconv DLL already installed in the target directory.
|
||||||
|
; This is required to detect a meanwhile globally installed dll.
|
||||||
|
Delete "$INSTDIR\iconv.dll"
|
||||||
|
ClearErrors
|
||||||
|
GetDllVersion "iconv.dll" $R0 $R1
|
||||||
|
IfErrors 0 +3
|
||||||
|
DetailPrint "iconv.dll is not installed."
|
||||||
|
goto InstallIconv
|
||||||
|
|
||||||
|
IntOp $R2 $R0 / 0x00010000
|
||||||
|
IntOp $R3 $R0 & 0x0000FFFF
|
||||||
|
IntOp $R4 $R1 / 0x00010000
|
||||||
|
IntOp $R5 $R1 & 0x0000FFFF
|
||||||
|
StrCpy $0 "$R2.$R3.$R4.$R5"
|
||||||
|
|
||||||
|
DetailPrint "iconv.dll version is $0"
|
||||||
|
|
||||||
|
IntCmp $R2 1 0 IconvTooOld
|
||||||
|
IntCmp $R3 9 0 IconvTooOld
|
||||||
|
return
|
||||||
|
|
||||||
|
IconvTooOld:
|
||||||
|
DetailPrint "The installed iconv.dll is too old."
|
||||||
|
|
||||||
|
InstallIconv:
|
||||||
|
SetOutPath "$INSTDIR"
|
||||||
|
File "iconv.dll"
|
||||||
|
|
||||||
|
FunctionEnd
|
||||||
|
|
||||||
|
|
||||||
; ------------
|
; ------------
|
||||||
; Descriptions
|
; Descriptions
|
||||||
; ------------
|
; ------------
|
||||||
@ -275,10 +326,12 @@ LangString T_About ${LANG_ENGLISH} \
|
|||||||
"GnuPG is GNU's tool for secure communication and data storage. \
|
"GnuPG is GNU's tool for secure communication and data storage. \
|
||||||
It can be used to encrypt data and to create digital signatures. \
|
It can be used to encrypt data and to create digital signatures. \
|
||||||
It includes an advanced key management facility and is compliant \
|
It includes an advanced key management facility and is compliant \
|
||||||
with the proposed OpenPGP Internet standard as described in RFC2440."
|
with the proposed OpenPGP Internet standard as described in RFC2440. \
|
||||||
|
\r\n\r\nThis is GnuPG version ${VERSION}"
|
||||||
LangString T_About ${LANG_GERMAN} \
|
LangString T_About ${LANG_GERMAN} \
|
||||||
"GnuPG is das Werzeug aus dem GNU Projekt zur sicheren Kommunikation \
|
"GnuPG is das Werzeug aus dem GNU Projekt zur sicheren Kommunikation \
|
||||||
sowie zum sicheren Speichern von Daten."
|
sowie zum sicheren Speichern von Daten. \
|
||||||
|
\r\n\r\nThis is GnuPG version ${VERSION}"
|
||||||
LangString T_ShowReadme ${LANG_ENGLISH} "Show the README file"
|
LangString T_ShowReadme ${LANG_ENGLISH} "Show the README file"
|
||||||
LangString T_ShowReadme ${LANG_GERMAN} "Die README Datei anzeigen"
|
LangString T_ShowReadme ${LANG_GERMAN} "Die README Datei anzeigen"
|
||||||
|
|
||||||
@ -288,6 +341,11 @@ LangString DESC_SecBase ${LANG_ENGLISH} \
|
|||||||
LangString DESC_SecBase ${LANG_GERMAN} \
|
LangString DESC_SecBase ${LANG_GERMAN} \
|
||||||
"Die Basis Dateien zur Benutzung des OpenPGP Protokolls"
|
"Die Basis Dateien zur Benutzung des OpenPGP Protokolls"
|
||||||
|
|
||||||
|
Langstring DESC_SecNLS ${LANG_ENGLISH} \
|
||||||
|
"Support for languages other than English"
|
||||||
|
LangString DESC_SecNLS ${LANG_GERMAN} \
|
||||||
|
"Unterstützung für weitere Sprachen neben Englisch"
|
||||||
|
|
||||||
LangString DESC_SecTools ${LANG_ENGLISH} \
|
LangString DESC_SecTools ${LANG_ENGLISH} \
|
||||||
"Extra tools like gpgv and gpgsplit"
|
"Extra tools like gpgv and gpgsplit"
|
||||||
LangString DESC_SecTools ${LANG_GERMAN} \
|
LangString DESC_SecTools ${LANG_GERMAN} \
|
||||||
@ -300,6 +358,7 @@ LangString DESC_SecDoc ${LANG_GERMAN} \
|
|||||||
|
|
||||||
!insertmacro MUI_FUNCTION_DESCRIPTION_BEGIN
|
!insertmacro MUI_FUNCTION_DESCRIPTION_BEGIN
|
||||||
!insertmacro MUI_DESCRIPTION_TEXT ${SecBase} $(DESC_SecBase)
|
!insertmacro MUI_DESCRIPTION_TEXT ${SecBase} $(DESC_SecBase)
|
||||||
|
!insertmacro MUI_DESCRIPTION_TEXT ${SecNLS} $(DESC_SecNLS)
|
||||||
!insertmacro MUI_DESCRIPTION_TEXT ${SecTools} $(DESC_SecTools)
|
!insertmacro MUI_DESCRIPTION_TEXT ${SecTools} $(DESC_SecTools)
|
||||||
!insertmacro MUI_DESCRIPTION_TEXT ${SecDoc} $(DESC_SecDoc)
|
!insertmacro MUI_DESCRIPTION_TEXT ${SecDoc} $(DESC_SecDoc)
|
||||||
!insertmacro MUI_FUNCTION_DESCRIPTION_END
|
!insertmacro MUI_FUNCTION_DESCRIPTION_END
|
||||||
|
@ -1,3 +1,16 @@
|
|||||||
|
2005-01-20 Werner Koch <wk@g10code.com>
|
||||||
|
|
||||||
|
* simple-gettext.c (set_gettext_file): Use MO files depending on
|
||||||
|
the installation directory. Add new arg REGKEY.
|
||||||
|
|
||||||
|
2005-01-18 Werner Koch <wk@g10code.com>
|
||||||
|
|
||||||
|
* argparse.c (default_strusage): Changed default copyright year to
|
||||||
|
2005.
|
||||||
|
|
||||||
|
* strgutil.c (handle_iconv_error): Print error messages only once.
|
||||||
|
(native_to_utf8, utf8_to_native): Ditto.
|
||||||
|
|
||||||
2005-01-11 Werner Koch <wk@g10code.com>
|
2005-01-11 Werner Koch <wk@g10code.com>
|
||||||
|
|
||||||
* strgutil.c (set_native_charset) [W32]: Use the alias table from
|
* strgutil.c (set_native_charset) [W32]: Use the alias table from
|
||||||
|
@ -914,7 +914,7 @@ default_strusage( int level )
|
|||||||
switch( level ) {
|
switch( level ) {
|
||||||
case 11: p = "foo"; break;
|
case 11: p = "foo"; break;
|
||||||
case 13: p = "0.0"; break;
|
case 13: p = "0.0"; break;
|
||||||
case 14: p = "Copyright (C) 2004 Free Software Foundation, Inc."; break;
|
case 14: p = "Copyright (C) 2005 Free Software Foundation, Inc."; break;
|
||||||
case 15: p =
|
case 15: p =
|
||||||
"This program comes with ABSOLUTELY NO WARRANTY.\n"
|
"This program comes with ABSOLUTELY NO WARRANTY.\n"
|
||||||
"This is free software, and you are welcome to redistribute it\n"
|
"This is free software, and you are welcome to redistribute it\n"
|
||||||
|
@ -1,5 +1,6 @@
|
|||||||
/* simple-gettext.c - a simplified version of gettext.
|
/* simple-gettext.c - a simplified version of gettext.
|
||||||
* Copyright (C) 1995, 1996, 1997, 1999 Free Software Foundation, Inc.
|
* Copyright (C) 1995, 1996, 1997, 1999,
|
||||||
|
* 2005 Free Software Foundation, Inc.
|
||||||
*
|
*
|
||||||
* This file is part of GnuPG.
|
* This file is part of GnuPG.
|
||||||
*
|
*
|
||||||
@ -232,12 +233,13 @@ load_domain( const char *filename )
|
|||||||
|
|
||||||
/****************
|
/****************
|
||||||
* Set the file used for translations. Pass a NULL to disable
|
* Set the file used for translations. Pass a NULL to disable
|
||||||
* translation. A new filename may be set at anytime.
|
* translation. A new filename may be set at anytime. If REGKEY is
|
||||||
* WARNING: After changing the filename you should not access any data
|
* not NULL, the function tries to selected the language the registry
|
||||||
* retrieved by gettext().
|
* key "Lang" below that key. WARNING: After changing the filename you
|
||||||
|
* should not access any data retrieved by gettext().
|
||||||
*/
|
*/
|
||||||
int
|
int
|
||||||
set_gettext_file( const char *filename )
|
set_gettext_file ( const char *filename, const char *regkey )
|
||||||
{
|
{
|
||||||
struct loaded_domain *domain = NULL;
|
struct loaded_domain *domain = NULL;
|
||||||
|
|
||||||
@ -252,29 +254,56 @@ set_gettext_file( const char *filename )
|
|||||||
/* absolute path - use it as is */
|
/* absolute path - use it as is */
|
||||||
domain = load_domain( filename );
|
domain = load_domain( filename );
|
||||||
}
|
}
|
||||||
else { /* relative path - append ".mo" and get dir from the environment */
|
else if (regkey) { /* Standard. */
|
||||||
char *buf = NULL;
|
char *instdir, *langid, *fname;
|
||||||
char *dir;
|
|
||||||
char *p;
|
char *p;
|
||||||
|
|
||||||
dir = read_w32_registry_string( NULL,
|
instdir = read_w32_registry_string ("HKEY_LOCAL_MACHINE",
|
||||||
"Control Panel\\Mingw32\\NLS",
|
regkey,
|
||||||
"MODir" );
|
"Install Directory");
|
||||||
if( dir && (buf=malloc(strlen(dir)+strlen(filename)+1+3+1)) ) {
|
if (!instdir)
|
||||||
strcpy(stpcpy(stpcpy(stpcpy( buf, dir),"\\"), filename),".mo");
|
return -1;
|
||||||
|
langid = read_w32_registry_string (NULL, /* HKCU then HKLM */
|
||||||
|
regkey,
|
||||||
|
"Lang");
|
||||||
|
if (!langid) {
|
||||||
|
free (instdir);
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
/* Strip stuff after a dot in case the user tried to enter
|
||||||
|
* the entire locale synatcs as usual for POSIX. */
|
||||||
|
p = strchr (langid, '.');
|
||||||
|
if (p)
|
||||||
|
*p = 0;
|
||||||
|
|
||||||
|
/* Build the key: "<instdir>/<domain>.nls/<langid>.mo" We
|
||||||
|
use a directory below the installation directory with
|
||||||
|
the domain included in case the software has been
|
||||||
|
insalled with other software altogether at the same
|
||||||
|
place. */
|
||||||
|
fname = malloc (strlen (instdir) + 1 + strlen (filename) + 5
|
||||||
|
+ strlen (langid) + 3 + 1);
|
||||||
|
if (!fname) {
|
||||||
|
free (instdir);
|
||||||
|
free (langid);
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
strcpy (stpcpy (stpcpy (stpcpy (stpcpy ( stpcpy (fname,
|
||||||
|
instdir),"\\"), filename), ".nls\\"), langid), ".mo");
|
||||||
|
free (instdir);
|
||||||
|
free (langid);
|
||||||
|
|
||||||
/* Better make sure that we don't mix forward and
|
/* Better make sure that we don't mix forward and
|
||||||
backward slashes. It seems that some Windoze
|
backward slashes. It seems that some Windoze
|
||||||
versions don't accept this. */
|
versions don't accept this. */
|
||||||
for (p=buf; *p; p++)
|
for (p=fname; *p; p++) {
|
||||||
{
|
|
||||||
if (*p == '/')
|
if (*p == '/')
|
||||||
*p = '\\';
|
*p = '\\';
|
||||||
}
|
}
|
||||||
domain = load_domain( buf );
|
domain = load_domain (fname);
|
||||||
free(buf);
|
free(fname);
|
||||||
}
|
|
||||||
free(dir);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!domain)
|
if (!domain)
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
/* strgutil.c - string utilities
|
/* strgutil.c - string utilities
|
||||||
* Copyright (C) 1994, 1998, 1999, 2000, 2001,
|
* Copyright (C) 1994, 1998, 1999, 2000, 2001,
|
||||||
* 2003 Free Software Foundation, Inc.
|
* 2003, 2004, 2005 Free Software Foundation, Inc.
|
||||||
*
|
*
|
||||||
* This file is part of GnuPG.
|
* This file is part of GnuPG.
|
||||||
*
|
*
|
||||||
@ -453,10 +453,33 @@ static void
|
|||||||
handle_iconv_error (const char *to, const char *from, int use_fallback)
|
handle_iconv_error (const char *to, const char *from, int use_fallback)
|
||||||
{
|
{
|
||||||
if (errno == EINVAL)
|
if (errno == EINVAL)
|
||||||
|
{
|
||||||
|
static int shown1, shown2;
|
||||||
|
int x;
|
||||||
|
|
||||||
|
if (to && !strcmp (to, "utf-8"))
|
||||||
|
{
|
||||||
|
x = shown1;
|
||||||
|
shown1 = 1;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
x = shown2;
|
||||||
|
shown2 = 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!x)
|
||||||
log_info (_("conversion from `%s' to `%s' not available\n"),
|
log_info (_("conversion from `%s' to `%s' not available\n"),
|
||||||
from, to);
|
from, to);
|
||||||
|
}
|
||||||
else
|
else
|
||||||
|
{
|
||||||
|
static int shown;
|
||||||
|
|
||||||
|
if (!shown)
|
||||||
log_info (_("iconv_open failed: %s\n"), strerror (errno));
|
log_info (_("iconv_open failed: %s\n"), strerror (errno));
|
||||||
|
shown = 1;
|
||||||
|
}
|
||||||
|
|
||||||
if (use_fallback)
|
if (use_fallback)
|
||||||
{
|
{
|
||||||
@ -706,8 +729,12 @@ native_to_utf8( const char *string )
|
|||||||
if ( iconv (cd, (ICONV_CONST char **)&inptr, &inbytes,
|
if ( iconv (cd, (ICONV_CONST char **)&inptr, &inbytes,
|
||||||
&outptr, &outbytes) == (size_t)-1)
|
&outptr, &outbytes) == (size_t)-1)
|
||||||
{
|
{
|
||||||
|
static int shown;
|
||||||
|
|
||||||
|
if (!shown)
|
||||||
log_info (_("conversion from `%s' to `%s' failed: %s\n"),
|
log_info (_("conversion from `%s' to `%s' failed: %s\n"),
|
||||||
active_charset_name, "utf-8", strerror (errno));
|
active_charset_name, "utf-8", strerror (errno));
|
||||||
|
shown = 1;
|
||||||
/* We don't do any conversion at all but use the strings as is. */
|
/* We don't do any conversion at all but use the strings as is. */
|
||||||
strcpy (buffer, string);
|
strcpy (buffer, string);
|
||||||
}
|
}
|
||||||
@ -980,8 +1007,12 @@ utf8_to_native( const char *string, size_t length, int delim )
|
|||||||
outbuf = outptr = m_alloc (outbytes);
|
outbuf = outptr = m_alloc (outbytes);
|
||||||
if ( iconv (cd, (ICONV_CONST char **)&inptr, &inbytes,
|
if ( iconv (cd, (ICONV_CONST char **)&inptr, &inbytes,
|
||||||
&outptr, &outbytes) == (size_t)-1) {
|
&outptr, &outbytes) == (size_t)-1) {
|
||||||
|
static int shown;
|
||||||
|
|
||||||
|
if (!shown)
|
||||||
log_info (_("conversion from `%s' to `%s' failed: %s\n"),
|
log_info (_("conversion from `%s' to `%s' failed: %s\n"),
|
||||||
"utf-8", active_charset_name, strerror (errno));
|
"utf-8", active_charset_name, strerror (errno));
|
||||||
|
shown = 1;
|
||||||
/* Didn't worked out. Temporary disable the use of
|
/* Didn't worked out. Temporary disable the use of
|
||||||
* iconv and fall back to our old code. */
|
* iconv and fall back to our old code. */
|
||||||
m_free (buffer);
|
m_free (buffer);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user