├── po
├── POTFILES.in
├── LINGUAS
├── quot.sed
├── .gitattributes
├── boldquot.sed
├── remove-potcdate.sin
├── insert-header.sin
├── en@quot.header
├── en@boldquot.header
├── Rules-quot
├── Makevars
├── ru.po
├── es.po
├── zh_CN.po
├── zh_TW.po
├── ar.po
├── fr.po
├── pl.po
├── pt.po
├── sv.po
├── nl.po
├── it.po
└── de.po
├── TODO
├── src
├── gnupg.ico
├── icon-16.png
├── gpgex.def
├── GNU.GnuPG.Gcc64Support.manifest
├── gpgex.manifest.in
├── resource.h
├── README.ext
├── gpgex-factory.h
├── client.h
├── exechelp.h
├── gpgex-class.h
├── Makefile.am
├── main.h
├── versioninfo.rc.in
├── standalone.svg
├── gpgex-factory.cc
├── gpgex-class.cc
├── gpgex.h
├── debug.h
└── main.cc
├── doc
├── gpgex.texi
├── Makefile.am
├── gpgex-en.html
└── gpgex-de.html
├── .gitignore
├── autogen.rc
├── m4
├── Makefile.am
├── codeset.m4
├── inttypes.m4
├── glibc21.m4
├── ulonglong.m4
├── stdint_h.m4
├── inttypes_h.m4
├── isc-posix.m4
├── inttypes-pri.m4
├── uintmax_t.m4
├── lcmessage.m4
├── nls.m4
├── intdiv0.m4
├── progtest.m4
├── iconv.m4
├── lib-ld.m4
├── lib-prefix.m4
├── po.m4
├── gpg-error.m4
└── libassuan.m4
├── AUTHORS
├── Makefile.am
├── README
├── NEWS
├── ChangeLog
├── INSTALL
└── configure.ac
/po/POTFILES.in:
--------------------------------------------------------------------------------
1 | src/main.cc
2 | src/client.cc
3 | src/gpgex.cc
4 |
--------------------------------------------------------------------------------
/TODO:
--------------------------------------------------------------------------------
1 | * Documentation is missing links to UI server documentation.
2 |
--------------------------------------------------------------------------------
/src/gnupg.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/gpg/gpgex/master/src/gnupg.ico
--------------------------------------------------------------------------------
/doc/gpgex.texi:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/gpg/gpgex/master/doc/gpgex.texi
--------------------------------------------------------------------------------
/src/icon-16.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/gpg/gpgex/master/src/icon-16.png
--------------------------------------------------------------------------------
/po/LINGUAS:
--------------------------------------------------------------------------------
1 | # Set of available languages.
2 | de ar es pl pt ru zh_CN zh_TW fr nl it sv
3 |
--------------------------------------------------------------------------------
/po/quot.sed:
--------------------------------------------------------------------------------
1 | s/"\([^"]*\)"/“\1”/g
2 | s/`\([^`']*\)'/‘\1’/g
3 | s/ '\([^`']*\)' / ‘\1’ /g
4 | s/ '\([^`']*\)'$/ ‘\1’/g
5 | s/^'\([^`']*\)' /‘\1’ /g
6 | s/“”/""/g
7 |
--------------------------------------------------------------------------------
/po/.gitattributes:
--------------------------------------------------------------------------------
1 | # You should add
2 | #[filter "cleanpo"]
3 | # clean = "awk '/^\"POT-Creation-Date:/&&!s{s=1;next};!/^#: /{print}'"
4 | # to your config file.
5 |
6 | /??.po filter=cleanpo
7 | /??_??.po filter=cleanpo
8 |
--------------------------------------------------------------------------------
/po/boldquot.sed:
--------------------------------------------------------------------------------
1 | s/"\([^"]*\)"/“\1”/g
2 | s/`\([^`']*\)'/‘\1’/g
3 | s/ '\([^`']*\)' / ‘\1’ /g
4 | s/ '\([^`']*\)'$/ ‘\1’/g
5 | s/^'\([^`']*\)' /‘\1’ /g
6 | s/“”/""/g
7 | s/“/“[1m/g
8 | s/”/[0m”/g
9 | s/‘/‘[1m/g
10 | s/’/[0m’/g
11 |
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | /Makefile.in
2 | /aclocal.m4
3 | /autom4te.cache/
4 | /config.h.in
5 | /configure
6 | /doc/Makefile.in
7 | /doc/gpgex.info
8 | /doc/mdate-sh
9 | /doc/stamp-vti
10 | /doc/version.texi
11 | /m4/Makefile.in
12 | /po/gpgex.pot
13 | /src/Makefile.in
14 |
--------------------------------------------------------------------------------
/autogen.rc:
--------------------------------------------------------------------------------
1 | # autogen.sh configuration for gpgex -*- sh -*-
2 |
3 | case "$myhost:$myhostsub" in
4 | w32:64)
5 | extraoptions=
6 | ;;
7 | w32:)
8 | extraoptions=
9 | ;;
10 | esac
11 |
12 |
13 | final_info="./configure --build-{w32,w64} && make"
14 |
--------------------------------------------------------------------------------
/m4/Makefile.am:
--------------------------------------------------------------------------------
1 | EXTRA_DIST = codeset.m4 gettext.m4 glibc21.m4 iconv.m4 intdiv0.m4 \
2 | inttypes-pri.m4 inttypes.m4 inttypes_h.m4 isc-posix.m4 \
3 | lcmessage.m4 lib-ld.m4 lib-link.m4 lib-prefix.m4 nls.m4 \
4 | po.m4 progtest.m4 stdint_h.m4 uintmax_t.m4 ulonglong.m4
5 |
--------------------------------------------------------------------------------
/src/gpgex.def:
--------------------------------------------------------------------------------
1 | LIBRARY "gpgex"
2 | DESCRIPTION 'GpgEX - GPG Shell Extensions'
3 |
4 | EXPORTS
5 | DllMain = DllMain@12 @1 PRIVATE
6 | DllRegisterServer = DllRegisterServer@0 @2 PRIVATE
7 | DllUnregisterServer = DllUnregisterServer@0 @3 PRIVATE
8 | DllCanUnloadNow = DllCanUnloadNow@0 @4 PRIVATE
9 | DllGetClassObject = DllGetClassObject@12 @5 PRIVATE
10 |
--------------------------------------------------------------------------------
/src/GNU.GnuPG.Gcc64Support.manifest:
--------------------------------------------------------------------------------
1 |
2 |
3 |
8 |
9 |
10 |
11 |
--------------------------------------------------------------------------------
/po/remove-potcdate.sin:
--------------------------------------------------------------------------------
1 | # Sed script that remove the POT-Creation-Date line in the header entry
2 | # from a POT file.
3 | #
4 | # The distinction between the first and the following occurrences of the
5 | # pattern is achieved by looking at the hold space.
6 | /^"POT-Creation-Date: .*"$/{
7 | x
8 | # Test if the hold space is empty.
9 | s/P/P/
10 | ta
11 | # Yes it was empty. First occurrence. Remove the line.
12 | g
13 | d
14 | bb
15 | :a
16 | # The hold space was nonempty. Following occurrences. Do nothing.
17 | x
18 | :b
19 | }
20 |
--------------------------------------------------------------------------------
/src/gpgex.manifest.in:
--------------------------------------------------------------------------------
1 |
2 |
3 |
9 | GpgEX - GnuPG shell extensions
10 |
11 |
12 |
17 |
18 |
19 |
20 |
--------------------------------------------------------------------------------
/AUTHORS:
--------------------------------------------------------------------------------
1 | Package: gpgex
2 | Contact: info-gpgex@g10code.com
3 | Bugs: https://bugs.gnupg.org
4 | Security related bug reports:
5 | Maintainer: Andre Heinecke
6 | License: LGPLv2.1
7 |
8 | g10 Code GmbH
9 | New code and package maintainer.
10 |
11 | أحمد غربية
12 | Arabic translations.
13 |
14 | Diego Escalante Urrelo
15 | Spanish translations.
16 |
17 | Sergei Smirnov
18 | Russian translations.
19 |
20 | Marco A.G.Pinto
21 | Portuguese translations.
22 |
23 | Tomasz Krawczyk
24 | Polish translation
25 |
--------------------------------------------------------------------------------
/doc/Makefile.am:
--------------------------------------------------------------------------------
1 | # doc - Automake template
2 | # Copyright (C) 2007 g10 Code GmbH
3 | #
4 | # This file is free software; as a special exception the author gives
5 | # unlimited permission to copy and/or distribute it, with or without
6 | # modifications, as long as this notice is preserved.
7 | #
8 | # This program is distributed in the hope that it will be useful, but
9 | # WITHOUT ANY WARRANTY, to the extent permitted by law; without even the
10 | # implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
11 |
12 | ## Process this file with automake to produce Makefile.in
13 |
14 | DISTCLEANFILES = gpgex.cps
15 |
16 | info_TEXINFOS = gpgex.texi
17 | gpgex_TEXINFOS = gpl.texi
18 |
19 | dist_doc_DATA = gpgex-en.html gpgex-de.html
20 |
--------------------------------------------------------------------------------
/po/insert-header.sin:
--------------------------------------------------------------------------------
1 | # Sed script that inserts the file called HEADER before the header entry.
2 | #
3 | # At each occurrence of a line starting with "msgid ", we execute the following
4 | # commands. At the first occurrence, insert the file. At the following
5 | # occurrences, do nothing. The distinction between the first and the following
6 | # occurrences is achieved by looking at the hold space.
7 | /^msgid /{
8 | x
9 | # Test if the hold space is empty.
10 | s/m/m/
11 | ta
12 | # Yes it was empty. First occurrence. Read the file.
13 | r HEADER
14 | # Output the file's contents by reading the next line. But don't lose the
15 | # current line while doing this.
16 | g
17 | N
18 | bb
19 | :a
20 | # The hold space was nonempty. Following occurrences. Do nothing.
21 | x
22 | :b
23 | }
24 |
--------------------------------------------------------------------------------
/m4/codeset.m4:
--------------------------------------------------------------------------------
1 | # codeset.m4 serial AM1 (gettext-0.10.40)
2 | dnl Copyright (C) 2000-2002 Free Software Foundation, Inc.
3 | dnl This file is free software, distributed under the terms of the GNU
4 | dnl General Public License. As a special exception to the GNU General
5 | dnl Public License, this file may be distributed as part of a program
6 | dnl that contains a configuration script generated by Autoconf, under
7 | dnl the same distribution terms as the rest of that program.
8 |
9 | dnl From Bruno Haible.
10 |
11 | AC_DEFUN([AM_LANGINFO_CODESET],
12 | [
13 | AC_CACHE_CHECK([for nl_langinfo and CODESET], am_cv_langinfo_codeset,
14 | [AC_TRY_LINK([#include ],
15 | [char* cs = nl_langinfo(CODESET);],
16 | am_cv_langinfo_codeset=yes,
17 | am_cv_langinfo_codeset=no)
18 | ])
19 | if test $am_cv_langinfo_codeset = yes; then
20 | AC_DEFINE(HAVE_LANGINFO_CODESET, 1,
21 | [Define if you have and nl_langinfo(CODESET).])
22 | fi
23 | ])
24 |
--------------------------------------------------------------------------------
/src/resource.h:
--------------------------------------------------------------------------------
1 | /* resource.h - resource ids
2 | Copyright (C) 2018 Intevation GmbH
3 |
4 | This file is part of GpgEX.
5 |
6 | GpgEX is free software; you can redistribute it and/or
7 | modify it under the terms of the GNU Lesser General Public
8 | License as published by the Free Software Foundation; either
9 | version 2 of the License, or (at your option) any later version.
10 |
11 | GpgEX is distributed in the hope that it will be useful,
12 | but WITHOUT ANY WARRANTY; without even the implied warranty of
13 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 | GNU Lesser General Public License for more details.
15 |
16 | You should have received a copy of the GNU Lesser General Public
17 | License along with this program; if not, write to the Free Software
18 | Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
19 | 02110-1301, USA. */
20 |
21 | #ifndef RESOURCE_H
22 | #define RESOURCE_H
23 |
24 | #define IDI_ICON_16 0x1000
25 |
26 | #endif // RESOURCE_H
27 |
--------------------------------------------------------------------------------
/m4/inttypes.m4:
--------------------------------------------------------------------------------
1 | # inttypes.m4 serial 1 (gettext-0.11.4)
2 | dnl Copyright (C) 1997-2002 Free Software Foundation, Inc.
3 | dnl This file is free software, distributed under the terms of the GNU
4 | dnl General Public License. As a special exception to the GNU General
5 | dnl Public License, this file may be distributed as part of a program
6 | dnl that contains a configuration script generated by Autoconf, under
7 | dnl the same distribution terms as the rest of that program.
8 |
9 | dnl From Paul Eggert.
10 |
11 | # Define HAVE_INTTYPES_H if exists and doesn't clash with
12 | # .
13 |
14 | AC_DEFUN([gt_HEADER_INTTYPES_H],
15 | [
16 | AC_CACHE_CHECK([for inttypes.h], gt_cv_header_inttypes_h,
17 | [
18 | AC_TRY_COMPILE(
19 | [#include
20 | #include ],
21 | [], gt_cv_header_inttypes_h=yes, gt_cv_header_inttypes_h=no)
22 | ])
23 | if test $gt_cv_header_inttypes_h = yes; then
24 | AC_DEFINE_UNQUOTED(HAVE_INTTYPES_H, 1,
25 | [Define if exists and doesn't clash with .])
26 | fi
27 | ])
28 |
--------------------------------------------------------------------------------
/m4/glibc21.m4:
--------------------------------------------------------------------------------
1 | # glibc21.m4 serial 2 (fileutils-4.1.3, gettext-0.10.40)
2 | dnl Copyright (C) 2000-2002 Free Software Foundation, Inc.
3 | dnl This file is free software, distributed under the terms of the GNU
4 | dnl General Public License. As a special exception to the GNU General
5 | dnl Public License, this file may be distributed as part of a program
6 | dnl that contains a configuration script generated by Autoconf, under
7 | dnl the same distribution terms as the rest of that program.
8 |
9 | # Test for the GNU C Library, version 2.1 or newer.
10 | # From Bruno Haible.
11 |
12 | AC_DEFUN([jm_GLIBC21],
13 | [
14 | AC_CACHE_CHECK(whether we are using the GNU C Library 2.1 or newer,
15 | ac_cv_gnu_library_2_1,
16 | [AC_EGREP_CPP([Lucky GNU user],
17 | [
18 | #include
19 | #ifdef __GNU_LIBRARY__
20 | #if (__GLIBC__ == 2 && __GLIBC_MINOR__ >= 1) || (__GLIBC__ > 2)
21 | Lucky GNU user
22 | #endif
23 | #endif
24 | ],
25 | ac_cv_gnu_library_2_1=yes,
26 | ac_cv_gnu_library_2_1=no)
27 | ]
28 | )
29 | AC_SUBST(GLIBC21)
30 | GLIBC21="$ac_cv_gnu_library_2_1"
31 | ]
32 | )
33 |
--------------------------------------------------------------------------------
/m4/ulonglong.m4:
--------------------------------------------------------------------------------
1 | # ulonglong.m4 serial 2 (fileutils-4.0.32, gettext-0.10.40)
2 | dnl Copyright (C) 1999-2002 Free Software Foundation, Inc.
3 | dnl This file is free software, distributed under the terms of the GNU
4 | dnl General Public License. As a special exception to the GNU General
5 | dnl Public License, this file may be distributed as part of a program
6 | dnl that contains a configuration script generated by Autoconf, under
7 | dnl the same distribution terms as the rest of that program.
8 |
9 | dnl From Paul Eggert.
10 |
11 | AC_DEFUN([jm_AC_TYPE_UNSIGNED_LONG_LONG],
12 | [
13 | AC_CACHE_CHECK([for unsigned long long], ac_cv_type_unsigned_long_long,
14 | [AC_TRY_LINK([unsigned long long ull = 1; int i = 63;],
15 | [unsigned long long ullmax = (unsigned long long) -1;
16 | return ull << i | ull >> i | ullmax / ull | ullmax % ull;],
17 | ac_cv_type_unsigned_long_long=yes,
18 | ac_cv_type_unsigned_long_long=no)])
19 | if test $ac_cv_type_unsigned_long_long = yes; then
20 | AC_DEFINE(HAVE_UNSIGNED_LONG_LONG, 1,
21 | [Define if you have the unsigned long long type.])
22 | fi
23 | ])
24 |
--------------------------------------------------------------------------------
/m4/stdint_h.m4:
--------------------------------------------------------------------------------
1 | # stdint_h.m4 serial 3 (gettext-0.12)
2 | dnl Copyright (C) 1997-2003 Free Software Foundation, Inc.
3 | dnl This file is free software, distributed under the terms of the GNU
4 | dnl General Public License. As a special exception to the GNU General
5 | dnl Public License, this file may be distributed as part of a program
6 | dnl that contains a configuration script generated by Autoconf, under
7 | dnl the same distribution terms as the rest of that program.
8 |
9 | dnl From Paul Eggert.
10 |
11 | # Define HAVE_STDINT_H_WITH_UINTMAX if exists,
12 | # doesn't clash with , and declares uintmax_t.
13 |
14 | AC_DEFUN([jm_AC_HEADER_STDINT_H],
15 | [
16 | AC_CACHE_CHECK([for stdint.h], jm_ac_cv_header_stdint_h,
17 | [AC_TRY_COMPILE(
18 | [#include
19 | #include ],
20 | [uintmax_t i = (uintmax_t) -1;],
21 | jm_ac_cv_header_stdint_h=yes,
22 | jm_ac_cv_header_stdint_h=no)])
23 | if test $jm_ac_cv_header_stdint_h = yes; then
24 | AC_DEFINE_UNQUOTED(HAVE_STDINT_H_WITH_UINTMAX, 1,
25 | [Define if exists, doesn't clash with ,
26 | and declares uintmax_t. ])
27 | fi
28 | ])
29 |
--------------------------------------------------------------------------------
/m4/inttypes_h.m4:
--------------------------------------------------------------------------------
1 | # inttypes_h.m4 serial 5 (gettext-0.12)
2 | dnl Copyright (C) 1997-2003 Free Software Foundation, Inc.
3 | dnl This file is free software, distributed under the terms of the GNU
4 | dnl General Public License. As a special exception to the GNU General
5 | dnl Public License, this file may be distributed as part of a program
6 | dnl that contains a configuration script generated by Autoconf, under
7 | dnl the same distribution terms as the rest of that program.
8 |
9 | dnl From Paul Eggert.
10 |
11 | # Define HAVE_INTTYPES_H_WITH_UINTMAX if exists,
12 | # doesn't clash with , and declares uintmax_t.
13 |
14 | AC_DEFUN([jm_AC_HEADER_INTTYPES_H],
15 | [
16 | AC_CACHE_CHECK([for inttypes.h], jm_ac_cv_header_inttypes_h,
17 | [AC_TRY_COMPILE(
18 | [#include
19 | #include ],
20 | [uintmax_t i = (uintmax_t) -1;],
21 | jm_ac_cv_header_inttypes_h=yes,
22 | jm_ac_cv_header_inttypes_h=no)])
23 | if test $jm_ac_cv_header_inttypes_h = yes; then
24 | AC_DEFINE_UNQUOTED(HAVE_INTTYPES_H_WITH_UINTMAX, 1,
25 | [Define if exists, doesn't clash with ,
26 | and declares uintmax_t. ])
27 | fi
28 | ])
29 |
--------------------------------------------------------------------------------
/m4/isc-posix.m4:
--------------------------------------------------------------------------------
1 | # isc-posix.m4 serial 2 (gettext-0.11.2)
2 | dnl Copyright (C) 1995-2002 Free Software Foundation, Inc.
3 | dnl This file is free software, distributed under the terms of the GNU
4 | dnl General Public License. As a special exception to the GNU General
5 | dnl Public License, this file may be distributed as part of a program
6 | dnl that contains a configuration script generated by Autoconf, under
7 | dnl the same distribution terms as the rest of that program.
8 |
9 | # This file is not needed with autoconf-2.53 and newer. Remove it in 2005.
10 |
11 | # This test replaces the one in autoconf.
12 | # Currently this macro should have the same name as the autoconf macro
13 | # because gettext's gettext.m4 (distributed in the automake package)
14 | # still uses it. Otherwise, the use in gettext.m4 makes autoheader
15 | # give these diagnostics:
16 | # configure.in:556: AC_TRY_COMPILE was called before AC_ISC_POSIX
17 | # configure.in:556: AC_TRY_RUN was called before AC_ISC_POSIX
18 |
19 | undefine([AC_ISC_POSIX])
20 |
21 | AC_DEFUN([AC_ISC_POSIX],
22 | [
23 | dnl This test replaces the obsolescent AC_ISC_POSIX kludge.
24 | AC_CHECK_LIB(cposix, strerror, [LIBS="$LIBS -lcposix"])
25 | ]
26 | )
27 |
--------------------------------------------------------------------------------
/po/en@quot.header:
--------------------------------------------------------------------------------
1 | # All this catalog "translates" are quotation characters.
2 | # The msgids must be ASCII and therefore cannot contain real quotation
3 | # characters, only substitutes like grave accent (0x60), apostrophe (0x27)
4 | # and double quote (0x22). These substitutes look strange; see
5 | # http://www.cl.cam.ac.uk/~mgk25/ucs/quotes.html
6 | #
7 | # This catalog translates grave accent (0x60) and apostrophe (0x27) to
8 | # left single quotation mark (U+2018) and right single quotation mark (U+2019).
9 | # It also translates pairs of apostrophe (0x27) to
10 | # left single quotation mark (U+2018) and right single quotation mark (U+2019)
11 | # and pairs of quotation mark (0x22) to
12 | # left double quotation mark (U+201C) and right double quotation mark (U+201D).
13 | #
14 | # When output to an UTF-8 terminal, the quotation characters appear perfectly.
15 | # When output to an ISO-8859-1 terminal, the single quotation marks are
16 | # transliterated to apostrophes (by iconv in glibc 2.2 or newer) or to
17 | # grave/acute accent (by libiconv), and the double quotation marks are
18 | # transliterated to 0x22.
19 | # When output to an ASCII terminal, the single quotation marks are
20 | # transliterated to apostrophes, and the double quotation marks are
21 | # transliterated to 0x22.
22 | #
23 |
--------------------------------------------------------------------------------
/m4/inttypes-pri.m4:
--------------------------------------------------------------------------------
1 | # inttypes-pri.m4 serial 1 (gettext-0.11.4)
2 | dnl Copyright (C) 1997-2002 Free Software Foundation, Inc.
3 | dnl This file is free software, distributed under the terms of the GNU
4 | dnl General Public License. As a special exception to the GNU General
5 | dnl Public License, this file may be distributed as part of a program
6 | dnl that contains a configuration script generated by Autoconf, under
7 | dnl the same distribution terms as the rest of that program.
8 |
9 | dnl From Bruno Haible.
10 |
11 | # Define PRI_MACROS_BROKEN if exists and defines the PRI*
12 | # macros to non-string values. This is the case on AIX 4.3.3.
13 |
14 | AC_DEFUN([gt_INTTYPES_PRI],
15 | [
16 | AC_REQUIRE([gt_HEADER_INTTYPES_H])
17 | if test $gt_cv_header_inttypes_h = yes; then
18 | AC_CACHE_CHECK([whether the inttypes.h PRIxNN macros are broken],
19 | gt_cv_inttypes_pri_broken,
20 | [
21 | AC_TRY_COMPILE([#include
22 | #ifdef PRId32
23 | char *p = PRId32;
24 | #endif
25 | ], [], gt_cv_inttypes_pri_broken=no, gt_cv_inttypes_pri_broken=yes)
26 | ])
27 | fi
28 | if test "$gt_cv_inttypes_pri_broken" = yes; then
29 | AC_DEFINE_UNQUOTED(PRI_MACROS_BROKEN, 1,
30 | [Define if exists and defines unusable PRI* macros.])
31 | fi
32 | ])
33 |
--------------------------------------------------------------------------------
/m4/uintmax_t.m4:
--------------------------------------------------------------------------------
1 | # uintmax_t.m4 serial 7 (gettext-0.12)
2 | dnl Copyright (C) 1997-2003 Free Software Foundation, Inc.
3 | dnl This file is free software, distributed under the terms of the GNU
4 | dnl General Public License. As a special exception to the GNU General
5 | dnl Public License, this file may be distributed as part of a program
6 | dnl that contains a configuration script generated by Autoconf, under
7 | dnl the same distribution terms as the rest of that program.
8 |
9 | dnl From Paul Eggert.
10 |
11 | AC_PREREQ(2.13)
12 |
13 | # Define uintmax_t to 'unsigned long' or 'unsigned long long'
14 | # if it is not already defined in or .
15 |
16 | AC_DEFUN([jm_AC_TYPE_UINTMAX_T],
17 | [
18 | AC_REQUIRE([jm_AC_HEADER_INTTYPES_H])
19 | AC_REQUIRE([jm_AC_HEADER_STDINT_H])
20 | if test $jm_ac_cv_header_inttypes_h = no && test $jm_ac_cv_header_stdint_h = no; then
21 | AC_REQUIRE([jm_AC_TYPE_UNSIGNED_LONG_LONG])
22 | test $ac_cv_type_unsigned_long_long = yes \
23 | && ac_type='unsigned long long' \
24 | || ac_type='unsigned long'
25 | AC_DEFINE_UNQUOTED(uintmax_t, $ac_type,
26 | [Define to unsigned long or unsigned long long
27 | if and don't define.])
28 | else
29 | AC_DEFINE(HAVE_UINTMAX_T, 1,
30 | [Define if you have the 'uintmax_t' type in or .])
31 | fi
32 | ])
33 |
--------------------------------------------------------------------------------
/po/en@boldquot.header:
--------------------------------------------------------------------------------
1 | # All this catalog "translates" are quotation characters.
2 | # The msgids must be ASCII and therefore cannot contain real quotation
3 | # characters, only substitutes like grave accent (0x60), apostrophe (0x27)
4 | # and double quote (0x22). These substitutes look strange; see
5 | # http://www.cl.cam.ac.uk/~mgk25/ucs/quotes.html
6 | #
7 | # This catalog translates grave accent (0x60) and apostrophe (0x27) to
8 | # left single quotation mark (U+2018) and right single quotation mark (U+2019).
9 | # It also translates pairs of apostrophe (0x27) to
10 | # left single quotation mark (U+2018) and right single quotation mark (U+2019)
11 | # and pairs of quotation mark (0x22) to
12 | # left double quotation mark (U+201C) and right double quotation mark (U+201D).
13 | #
14 | # When output to an UTF-8 terminal, the quotation characters appear perfectly.
15 | # When output to an ISO-8859-1 terminal, the single quotation marks are
16 | # transliterated to apostrophes (by iconv in glibc 2.2 or newer) or to
17 | # grave/acute accent (by libiconv), and the double quotation marks are
18 | # transliterated to 0x22.
19 | # When output to an ASCII terminal, the single quotation marks are
20 | # transliterated to apostrophes, and the double quotation marks are
21 | # transliterated to 0x22.
22 | #
23 | # This catalog furthermore displays the text between the quotation marks in
24 | # bold face, assuming the VT100/XTerm escape sequences.
25 | #
26 |
--------------------------------------------------------------------------------
/m4/lcmessage.m4:
--------------------------------------------------------------------------------
1 | # lcmessage.m4 serial 3 (gettext-0.11.3)
2 | dnl Copyright (C) 1995-2002 Free Software Foundation, Inc.
3 | dnl This file is free software, distributed under the terms of the GNU
4 | dnl General Public License. As a special exception to the GNU General
5 | dnl Public License, this file may be distributed as part of a program
6 | dnl that contains a configuration script generated by Autoconf, under
7 | dnl the same distribution terms as the rest of that program.
8 | dnl
9 | dnl This file can can be used in projects which are not available under
10 | dnl the GNU General Public License or the GNU Library General Public
11 | dnl License but which still want to provide support for the GNU gettext
12 | dnl functionality.
13 | dnl Please note that the actual code of the GNU gettext library is covered
14 | dnl by the GNU Library General Public License, and the rest of the GNU
15 | dnl gettext package package is covered by the GNU General Public License.
16 | dnl They are *not* in the public domain.
17 |
18 | dnl Authors:
19 | dnl Ulrich Drepper , 1995.
20 |
21 | # Check whether LC_MESSAGES is available in .
22 |
23 | AC_DEFUN([AM_LC_MESSAGES],
24 | [
25 | AC_CACHE_CHECK([for LC_MESSAGES], am_cv_val_LC_MESSAGES,
26 | [AC_TRY_LINK([#include ], [return LC_MESSAGES],
27 | am_cv_val_LC_MESSAGES=yes, am_cv_val_LC_MESSAGES=no)])
28 | if test $am_cv_val_LC_MESSAGES = yes; then
29 | AC_DEFINE(HAVE_LC_MESSAGES, 1,
30 | [Define if your file defines LC_MESSAGES.])
31 | fi
32 | ])
33 |
--------------------------------------------------------------------------------
/Makefile.am:
--------------------------------------------------------------------------------
1 | # Makefile.am - main makefile for GpgEX
2 | # Copyright (C) 2005 g10 Code GmbH
3 | #
4 | # This file is free software; as a special exception the author gives
5 | # unlimited permission to copy and/or distribute it, with or without
6 | # modifications, as long as this notice is preserved.
7 | #
8 | # This program is distributed in the hope that it will be useful, but
9 | # WITHOUT ANY WARRANTY, to the extent permitted by law; without even the
10 | # implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
11 |
12 | ## Process this file with automake to produce Makefile.in
13 |
14 | ACLOCAL_AMFLAGS = -I m4
15 | AUTOMAKE_OPTIONS = no-dist-gzip dist-bzip2
16 | # Because we can only build the w32 version we need to help automake.
17 | DISTCHECK_CONFIGURE_FLAGS = --host=@host@ --build=@build@ \
18 | --prefix=@prefix@
19 |
20 | EXTRA_DIST = autogen.sh autogen.rc
21 |
22 |
23 | SUBDIRS = doc src po m4
24 |
25 | dist-hook:
26 | echo "$(VERSION)" > $(distdir)/VERSION
27 |
28 | distcheck-hook:
29 | set -e; ( \
30 | pref="#+macro: gpgex_" ;\
31 | reldate="$$(date -u +%Y-%m-%d)" ;\
32 | echo "$${pref}ver $(PACKAGE_VERSION)" ;\
33 | echo "$${pref}date $${reldate}" ;\
34 | list='$(DIST_ARCHIVES)'; for i in $$list; do \
35 | case "$$i" in *.tar.bz2) \
36 | echo "$${pref}size $$(wc -c <$$i|awk '{print int($$1/1024)}')k" ;\
37 | echo "$${pref}sha1 $$(sha1sum <$$i|cut -d' ' -f1)" ;\
38 | echo "$${pref}sha2 $$(sha256sum <$$i|cut -d' ' -f1)" ;;\
39 | esac;\
40 | done ) | tee $(distdir).swdb
41 |
--------------------------------------------------------------------------------
/src/README.ext:
--------------------------------------------------------------------------------
1 | Shell Extensions
2 | ================
3 |
4 | The following extensions are available:
5 |
6 | IPersistFile group:
7 |
8 | Icon
9 | Data
10 | Drop
11 |
12 | IShellExtInit group:
13 |
14 | Shortcut IContextMenu
15 | Drag-and-drop
16 | Property sheet
17 |
18 |
19 | IShellExtInit
20 | =============
21 |
22 | http://msdn2.microsoft.com/en-us/library/aa969351.aspx
23 |
24 | Has a single method beyond IUnknown which is called first after
25 | creating a new instance of a shortcut, drag and drop or property sheet
26 | extension.
27 |
28 | STDMETHODIMP Initialize (LPCITEMIDLIST pIDFolder, IDataObject *pDataObj,
29 | HKEY hRegKey)
30 |
31 | The argument pIDFolder is a pointer to an ITEMIDLIST structure which
32 | identifies a folder. The pDataObj argument is a pointer to an
33 | IDataObject which specifies the objects acted upon. hRegKey is the
34 | registry key for the file object or folder type.
35 |
36 |
37 | Shortcut menu
38 | -------------
39 |
40 | In this case, pIDFolder is NULL for file objects, and the respective
41 | folder for folder background shortcut menus. pDataObj refers to the
42 | selected files. hRegKey refers to the file object with focus.
43 |
44 |
45 | Drag and drop
46 | -------------
47 |
48 | In this case, pIDFolder specifies the target folder. pDataObj are the
49 | items being dropped. hRegKey refers to the target folder.
50 |
51 |
52 | Property sheet
53 | --------------
54 |
55 | In this case, pIDFolder is NULL.
56 |
57 |
58 | IContextMenu
59 | ============
60 |
61 | http://msdn2.microsoft.com/en-us/library/aa969384.aspx
62 |
--------------------------------------------------------------------------------
/src/gpgex-factory.h:
--------------------------------------------------------------------------------
1 | /* gpgex-factory.h - gpgex prototypes
2 | Copyright (C) 2007 g10 Code GmbH
3 |
4 | This file is part of GpgEX.
5 |
6 | GpgEX is free software; you can redistribute it and/or
7 | modify it under the terms of the GNU Lesser General Public
8 | License as published by the Free Software Foundation; either
9 | version 2 of the License, or (at your option) any later version.
10 |
11 | GpgEX is distributed in the hope that it will be useful,
12 | but WITHOUT ANY WARRANTY; without even the implied warranty of
13 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 | GNU Lesser General Public License for more details.
15 |
16 | You should have received a copy of the GNU Lesser General Public
17 | License along with this program; if not, write to the Free Software
18 | Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
19 | 02110-1301, USA. */
20 |
21 | #ifndef GPGEX_FACTORY_H
22 | #define GPGEX_FACTORY_H
23 |
24 | #include
25 |
26 |
27 | /* Our class factory interface. */
28 | class gpgex_factory_t : public IClassFactory
29 | {
30 | public:
31 | /* IUnknown methods. */
32 | STDMETHODIMP QueryInterface (REFIID riid, void **ppv);
33 | STDMETHODIMP_(ULONG) AddRef (void);
34 | STDMETHODIMP_(ULONG) Release (void);
35 |
36 | /* IClassFactory methods. */
37 | STDMETHODIMP CreateInstance (LPUNKNOWN punkOuter, REFIID iid,
38 | void **ppv);
39 | STDMETHODIMP LockServer (BOOL fLock);
40 | };
41 |
42 |
43 | /* The global singleton instance of the GpgEX factory. */
44 | extern gpgex_factory_t gpgex_factory;
45 |
46 | #endif /* ! GPGEX_FACTORY_H */
47 |
--------------------------------------------------------------------------------
/README:
--------------------------------------------------------------------------------
1 | GPG Explorer Extensions
2 | =======================
3 |
4 | This package contains GpgEX, the GNU Privacy Guard extensions for the
5 | Windows Explorer shell.
6 |
7 |
8 | Registry Settings
9 | =================
10 |
11 | The following registry entries are set by GpgEX at installation time
12 | to register it as a shell extension:
13 |
14 | HKCR\CLSID\CCD955E4-5C16-4A33-AFDA-A8947A94946B
15 | HKCR\*\ShellEx\ContextMenuHandlers\GpgEX
16 | HKCR\Directory\ShellEx\ContextMenuHandlers\GpgEX
17 |
18 | The following registry entries are read by GpgEX and affect its
19 | operation:
20 |
21 | HKLM\Software\GNU\GnuPG:GpgEX Debug File
22 | HKLM\Software\Wow6432Node\GNU\GnuPG:GpgEX Debug File
23 | See below.
24 |
25 | HKCU\Software\GNU\GnuPG:UI Server
26 | HKLM\Software\GNU\GnuPG:UI Server
27 | HKCU\Software\GNU\GnuPG:Install Directory
28 | HKLM\Software\GNU\GnuPG:Install Directory
29 | These entries are not anymore used.
30 |
31 |
32 |
33 | Debugging
34 | =========
35 |
36 | A debug file path can be specified with the registry value "GpgEX
37 | Debug File" in the HKLM\Software\GNU\GnuPG key. To this file logging
38 | information is appended.
39 |
40 | To increase the frequency at which extensions are unloaded, create the
41 | following registry key with default value "1".
42 |
43 | HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Explorer\AlwaysUnloadDLL
44 |
45 | On NT, you can run the taskbar, the Desktop and each explorer window
46 | in a separate process by creating a DWORD "DesktopProcess" with value
47 | 1 under:
48 |
49 | HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer
50 |
51 | You can also terminate the explorer process and restart it from a
52 | previously opened console window.
53 |
--------------------------------------------------------------------------------
/src/client.h:
--------------------------------------------------------------------------------
1 | /* client.h - gpgex assuan client interface
2 | Copyright (C) 2007 g10 Code GmbH
3 |
4 | This file is part of GpgEX.
5 |
6 | GpgEX is free software; you can redistribute it and/or
7 | modify it under the terms of the GNU Lesser General Public
8 | License as published by the Free Software Foundation; either
9 | version 2 of the License, or (at your option) any later version.
10 |
11 | GpgEX is distributed in the hope that it will be useful,
12 | but WITHOUT ANY WARRANTY; without even the implied warranty of
13 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 | GNU Lesser General Public License for more details.
15 |
16 | You should have received a copy of the GNU Lesser General Public
17 | License along with this program; if not, write to the Free Software
18 | Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
19 | 02110-1301, USA. */
20 |
21 | #ifndef CLIENT_H
22 | #define CLIENT_H
23 |
24 | #include
25 | #include
26 |
27 | using std::vector;
28 | using std::string;
29 |
30 | #include
31 |
32 | class client_t
33 | {
34 | private:
35 | HWND window;
36 |
37 | void call_assuan (const char *cmd, vector &filenames);
38 |
39 | public:
40 | client_t (HWND window_handle)
41 | : window (window_handle)
42 | {
43 | }
44 |
45 | void decrypt_verify (vector &filenames);
46 | void decrypt (vector &filenames);
47 | void verify (vector &filenames);
48 | void sign_encrypt (vector &filenames);
49 | void encrypt (vector &filenames);
50 | void sign (vector &filenames);
51 | void import (vector &filenames);
52 | void create_checksums (vector &filenames);
53 | void verify_checksums (vector &filenames);
54 | };
55 |
56 | #endif /* ! CLIENT_H */
57 |
--------------------------------------------------------------------------------
/po/Rules-quot:
--------------------------------------------------------------------------------
1 | # Special Makefile rules for English message catalogs with quotation marks.
2 |
3 | DISTFILES.common.extra1 = quot.sed boldquot.sed en@quot.header en@boldquot.header insert-header.sin Rules-quot
4 |
5 | .SUFFIXES: .insert-header .po-update-en
6 |
7 | en@quot.po-update: en@quot.po-update-en
8 | en@boldquot.po-update: en@boldquot.po-update-en
9 |
10 | .insert-header.po-update-en:
11 | @lang=`echo $@ | sed -e 's/\.po-update-en$$//'`; \
12 | if test "$(PACKAGE)" = "gettext"; then PATH=`pwd`/../src:$$PATH; GETTEXTLIBDIR=`cd $(top_srcdir)/src && pwd`; export GETTEXTLIBDIR; fi; \
13 | tmpdir=`pwd`; \
14 | echo "$$lang:"; \
15 | ll=`echo $$lang | sed -e 's/@.*//'`; \
16 | LC_ALL=C; export LC_ALL; \
17 | cd $(srcdir); \
18 | if $(MSGINIT) -i $(DOMAIN).pot --no-translator -l $$ll -o - 2>/dev/null | sed -f $$tmpdir/$$lang.insert-header | $(MSGCONV) -t UTF-8 | $(MSGFILTER) sed -f `echo $$lang | sed -e 's/.*@//'`.sed 2>/dev/null > $$tmpdir/$$lang.new.po; then \
19 | if cmp $$lang.po $$tmpdir/$$lang.new.po >/dev/null 2>&1; then \
20 | rm -f $$tmpdir/$$lang.new.po; \
21 | else \
22 | if mv -f $$tmpdir/$$lang.new.po $$lang.po; then \
23 | :; \
24 | else \
25 | echo "creation of $$lang.po failed: cannot move $$tmpdir/$$lang.new.po to $$lang.po" 1>&2; \
26 | exit 1; \
27 | fi; \
28 | fi; \
29 | else \
30 | echo "creation of $$lang.po failed!" 1>&2; \
31 | rm -f $$tmpdir/$$lang.new.po; \
32 | fi
33 |
34 | en@quot.insert-header: insert-header.sin
35 | sed -e '/^#/d' -e 's/HEADER/en@quot.header/g' $(srcdir)/insert-header.sin > en@quot.insert-header
36 |
37 | en@boldquot.insert-header: insert-header.sin
38 | sed -e '/^#/d' -e 's/HEADER/en@boldquot.header/g' $(srcdir)/insert-header.sin > en@boldquot.insert-header
39 |
40 | mostlyclean: mostlyclean-quot
41 | mostlyclean-quot:
42 | rm -f *.insert-header
43 |
--------------------------------------------------------------------------------
/src/exechelp.h:
--------------------------------------------------------------------------------
1 | /* exechelp.h - fork and exec helpers
2 | * Copyright (C) 2004, 2007 g10 Code GmbH
3 | *
4 | * This file is part of GpgEX.
5 | *
6 | * GpgEX is free software; you can redistribute it and/or modify
7 | * it under the terms of the GNU General Public License as published by
8 | * the Free Software Foundation; either version 2 of the License, or
9 | * (at your option) any later version.
10 | *
11 | * GpgEX is distributed in the hope that it will be useful,
12 | * but WITHOUT ANY WARRANTY; without even the implied warranty of
13 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 | * GNU General Public License for more details.
15 | *
16 | * You should have received a copy of the GNU General Public License
17 | * along with this program; if not, write to the Free Software
18 | * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
19 | */
20 |
21 | #ifndef GPGEX_EXECHELP_H
22 | #define GPGEX_EXECHELP_H
23 |
24 | #include
25 |
26 | #ifdef __cplusplus
27 | extern "C" {
28 | #if 0
29 | }
30 | #endif
31 | #endif
32 |
33 | #define lock_spawn_t HANDLE
34 |
35 | gpg_error_t gpgex_lock_spawning (lock_spawn_t *lock);
36 | void gpgex_unlock_spawning (lock_spawn_t *lock);
37 |
38 | /* Fork and exec CMDLINE with /dev/null as stdin, stdout and stderr.
39 | Returns 0 on success or an error code. */
40 | gpg_error_t gpgex_spawn_detached (const char *pgmname, const char *cmdline);
41 |
42 | /* Fork and exec PGMNAME with args in CMDLINE and /dev/null connected
43 | * to stdin and stderr. Read from stdout and return the result as a
44 | * malloced string at R_STRING. Returns 0 on success or an error code. */
45 | gpg_error_t gpgex_spawn_get_string (const char *pgmname, const char *cmdline,
46 | char **r_string);
47 |
48 |
49 | #ifdef __cplusplus
50 | #if 0
51 | {
52 | #endif
53 | }
54 | #endif
55 |
56 | #endif /* GPGEX_EXECHELP_H */
57 |
--------------------------------------------------------------------------------
/src/gpgex-class.h:
--------------------------------------------------------------------------------
1 | /* gpgex-class.h - gpgex prototypes
2 | Copyright (C) 2007 g10 Code GmbH
3 |
4 | This file is part of GpgEX.
5 |
6 | GpgEX is free software; you can redistribute it and/or
7 | modify it under the terms of the GNU Lesser General Public
8 | License as published by the Free Software Foundation; either
9 | version 2 of the License, or (at your option) any later version.
10 |
11 | GpgEX is distributed in the hope that it will be useful,
12 | but WITHOUT ANY WARRANTY; without even the implied warranty of
13 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 | GNU Lesser General Public License for more details.
15 |
16 | You should have received a copy of the GNU Lesser General Public
17 | License along with this program; if not, write to the Free Software
18 | Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
19 | 02110-1301, USA. */
20 |
21 | #ifndef GPGEX_CLASS_H
22 | #define GPGEX_CLASS_H 1
23 |
24 | #include
25 |
26 |
27 | /* We need our own COM class, because the COM class identifier (an
28 | UUID) is what is used to register the server component with the
29 | Windows Explorer Shell. The shell will then reference the
30 | extension by this CLSID. */
31 | #define CLSID_GPGEX_STR "CCD955E4-5C16-4A33-AFDA-A8947A94946B"
32 | #define CLSID_GPGEX { 0xccd955e4, 0x5c16, 0x4a33, \
33 | { 0xaf, 0xda, 0xa8, 0x94, 0x7a, 0x94, 0x94, 0x6b } };
34 |
35 | /* The class ID in a form that can be used by certain interfaces. */
36 | extern CLSID CLSID_gpgex;
37 |
38 | /* We do not use custom interfaces. This also spares us from
39 | implementing and registering a proxy/stub DLL. */
40 |
41 |
42 | class gpgex_class
43 | {
44 | public:
45 | /* Unregister the GpgEX component. */
46 | static void init (void);
47 |
48 | /* Unregister the GpgEX component. */
49 | static void deinit (void);
50 | };
51 |
52 | #endif /* ! GPGEX_CLASS_H */
53 |
--------------------------------------------------------------------------------
/po/Makevars:
--------------------------------------------------------------------------------
1 | # Makefile variables for PO directory in any package using GNU gettext.
2 |
3 | # Usually the message domain is the same as the package name.
4 | DOMAIN = $(PACKAGE)
5 |
6 | # These two variables depend on the location of this directory.
7 | subdir = po
8 | top_builddir = ..
9 |
10 | # These options get passed to xgettext.
11 | XGETTEXT_OPTIONS = --keyword=_ --keyword=N_
12 |
13 | # This is the copyright holder that gets inserted into the header of the
14 | # $(DOMAIN).pot file. Set this to the copyright holder of the surrounding
15 | # package. (Note that the msgstr strings, extracted from the package's
16 | # sources, belong to the copyright holder of the package.) Translators are
17 | # expected to transfer the copyright for their translations to this person
18 | # or entity, or to disclaim their copyright. The empty string stands for
19 | # the public domain; in this case the translators are expected to disclaim
20 | # their copyright.
21 | COPYRIGHT_HOLDER = g10 Code GmbH
22 |
23 | # This is the email address or URL to which the translators shall report
24 | # bugs in the untranslated strings:
25 | # - Strings which are not entire sentences, see the maintainer guidelines
26 | # in the GNU gettext documentation, section 'Preparing Strings'.
27 | # - Strings which use unclear terms or require additional context to be
28 | # understood.
29 | # - Strings which make invalid assumptions about notation of date, time or
30 | # money.
31 | # - Pluralisation problems.
32 | # - Incorrect English spelling.
33 | # - Incorrect formatting.
34 | # It can be your email address, or a mailing list address where translators
35 | # can write to without being subscribed, or the URL of a web page through
36 | # which the translators can contact you.
37 | MSGID_BUGS_ADDRESS = http://bugs.gnupg.org
38 |
39 | # This is the list of locale categories, beyond LC_MESSAGES, for which the
40 | # message catalogs shall be used. It is usually empty.
41 | EXTRA_LOCALE_CATEGORIES =
42 |
--------------------------------------------------------------------------------
/m4/nls.m4:
--------------------------------------------------------------------------------
1 | # nls.m4 serial 1 (gettext-0.12)
2 | dnl Copyright (C) 1995-2003 Free Software Foundation, Inc.
3 | dnl This file is free software, distributed under the terms of the GNU
4 | dnl General Public License. As a special exception to the GNU General
5 | dnl Public License, this file may be distributed as part of a program
6 | dnl that contains a configuration script generated by Autoconf, under
7 | dnl the same distribution terms as the rest of that program.
8 | dnl
9 | dnl This file can can be used in projects which are not available under
10 | dnl the GNU General Public License or the GNU Library General Public
11 | dnl License but which still want to provide support for the GNU gettext
12 | dnl functionality.
13 | dnl Please note that the actual code of the GNU gettext library is covered
14 | dnl by the GNU Library General Public License, and the rest of the GNU
15 | dnl gettext package package is covered by the GNU General Public License.
16 | dnl They are *not* in the public domain.
17 |
18 | dnl Authors:
19 | dnl Ulrich Drepper , 1995-2000.
20 | dnl Bruno Haible , 2000-2003.
21 |
22 | AC_DEFUN([AM_NLS],
23 | [
24 | AC_MSG_CHECKING([whether NLS is requested])
25 | dnl Default is enabled NLS
26 | AC_ARG_ENABLE(nls,
27 | [ --disable-nls do not use Native Language Support],
28 | USE_NLS=$enableval, USE_NLS=yes)
29 | AC_MSG_RESULT($USE_NLS)
30 | AC_SUBST(USE_NLS)
31 | ])
32 |
33 | AC_DEFUN([AM_MKINSTALLDIRS],
34 | [
35 | dnl If the AC_CONFIG_AUX_DIR macro for autoconf is used we possibly
36 | dnl find the mkinstalldirs script in another subdir but $(top_srcdir).
37 | dnl Try to locate it.
38 | MKINSTALLDIRS=
39 | if test -n "$ac_aux_dir"; then
40 | case "$ac_aux_dir" in
41 | /*) MKINSTALLDIRS="$ac_aux_dir/mkinstalldirs" ;;
42 | *) MKINSTALLDIRS="\$(top_builddir)/$ac_aux_dir/mkinstalldirs" ;;
43 | esac
44 | fi
45 | if test -z "$MKINSTALLDIRS"; then
46 | MKINSTALLDIRS="\$(top_srcdir)/mkinstalldirs"
47 | fi
48 | AC_SUBST(MKINSTALLDIRS)
49 | ])
50 |
--------------------------------------------------------------------------------
/m4/intdiv0.m4:
--------------------------------------------------------------------------------
1 | # intdiv0.m4 serial 1 (gettext-0.11.3)
2 | dnl Copyright (C) 2002 Free Software Foundation, Inc.
3 | dnl This file is free software, distributed under the terms of the GNU
4 | dnl General Public License. As a special exception to the GNU General
5 | dnl Public License, this file may be distributed as part of a program
6 | dnl that contains a configuration script generated by Autoconf, under
7 | dnl the same distribution terms as the rest of that program.
8 |
9 | dnl From Bruno Haible.
10 |
11 | AC_DEFUN([gt_INTDIV0],
12 | [
13 | AC_REQUIRE([AC_PROG_CC])dnl
14 | AC_REQUIRE([AC_CANONICAL_HOST])dnl
15 |
16 | AC_CACHE_CHECK([whether integer division by zero raises SIGFPE],
17 | gt_cv_int_divbyzero_sigfpe,
18 | [
19 | AC_TRY_RUN([
20 | #include
21 | #include
22 |
23 | static void
24 | #ifdef __cplusplus
25 | sigfpe_handler (int sig)
26 | #else
27 | sigfpe_handler (sig) int sig;
28 | #endif
29 | {
30 | /* Exit with code 0 if SIGFPE, with code 1 if any other signal. */
31 | exit (sig != SIGFPE);
32 | }
33 |
34 | int x = 1;
35 | int y = 0;
36 | int z;
37 | int nan;
38 |
39 | int main ()
40 | {
41 | signal (SIGFPE, sigfpe_handler);
42 | /* IRIX and AIX (when "xlc -qcheck" is used) yield signal SIGTRAP. */
43 | #if (defined (__sgi) || defined (_AIX)) && defined (SIGTRAP)
44 | signal (SIGTRAP, sigfpe_handler);
45 | #endif
46 | /* Linux/SPARC yields signal SIGILL. */
47 | #if defined (__sparc__) && defined (__linux__)
48 | signal (SIGILL, sigfpe_handler);
49 | #endif
50 |
51 | z = x / y;
52 | nan = y / y;
53 | exit (1);
54 | }
55 | ], gt_cv_int_divbyzero_sigfpe=yes, gt_cv_int_divbyzero_sigfpe=no,
56 | [
57 | # Guess based on the CPU.
58 | case "$host_cpu" in
59 | alpha* | i[34567]86 | m68k | s390*)
60 | gt_cv_int_divbyzero_sigfpe="guessing yes";;
61 | *)
62 | gt_cv_int_divbyzero_sigfpe="guessing no";;
63 | esac
64 | ])
65 | ])
66 | case "$gt_cv_int_divbyzero_sigfpe" in
67 | *yes) value=1;;
68 | *) value=0;;
69 | esac
70 | AC_DEFINE_UNQUOTED(INTDIV0_RAISES_SIGFPE, $value,
71 | [Define if integer division by zero raises signal SIGFPE.])
72 | ])
73 |
--------------------------------------------------------------------------------
/doc/gpgex-en.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | Help for GnuPG Shell Extension (GpgEX)
6 |
7 |
8 |
13 | The GNU Privacy Guard extensions for the Windows Explorer shell
14 | allow you to access cryptographic functions of the GnuPG user
15 | interface using the context menu to files.
16 |
17 |
Commands
18 |
Decrypt and verify, Decrypt, Verify
19 |
20 | Decrypt and/or verify the selected files. FIXME: Add a link
21 | to the Gpg4win documentation for the decrypt and verify
22 | functions.
23 |
24 |
Encrypt and sign, Encrypt, Sign
25 |
26 | Encrypt and/or sign the selected files. FIXME: Add a link to the
27 | Gpg4win documentation for the sign and encrypt
28 | functions.
29 |
30 |
Import keys
31 |
32 | Import certificates in the selected files. FIXME: Add a link to the
33 | Gpg4win documentation for the import function.
34 |
35 |
Help on GpgEX
36 |
37 | Display this help.
38 |
39 |
About GpgEX
40 |
41 | Display the version number.
42 |
43 |
44 |
Debugging
45 |
46 | If the GnuPG user interface (either GPA or Kleopatra) can not be
47 | accessed, a message box with an error message will be displayed.
48 | To get more information, you can either check the error log, or
49 | specify a debug file: Select the
50 | key HKLM\Software\GNU\GnuPG
51 | in the registry editor, create a new string value with the name
52 | GpgEX Debug File and the value of the debug filename
53 | (e.g. c:\temp\gpgex-debug-file.log). To this file
54 | logging information is appended, after a restart if necessary.
55 |
56 |
Reference
57 |
58 | Please find more information and new software versions at
59 | the Gpg4win website.
60 |
61 |
62 |
63 |
--------------------------------------------------------------------------------
/src/Makefile.am:
--------------------------------------------------------------------------------
1 | # Makefile.am - main makefile for dialogs part of GpgEX
2 | # Copyright (C) 2005, 2007, 2013 g10 Code GmbH
3 | #
4 | # This file is free software; as a special exception the author gives
5 | # unlimited permission to copy and/or distribute it, with or without
6 | # modifications, as long as this notice is preserved.
7 | #
8 | # This program is distributed in the hope that it will be useful, but
9 | # WITHOUT ANY WARRANTY, to the extent permitted by law; without even the
10 | # implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
11 |
12 | ## Process this file with automake to produce Makefile.in
13 |
14 | bin_PROGRAMS = gpgex
15 | EXTRA_DIST = versioninfo.rc.in gpgex.manifest.in \
16 | GNU.GnuPG.Gcc64Support.manifest gnupg.ico \
17 | gpgex_logo.svg standalone.svg
18 | EXEEXT = .dll
19 |
20 | AM_CFLAGS = $(LIBASSUAN_CFLAGS) $(GPG_ERROR_CFLAGS) -shared
21 | AM_CXXFLAGS = $(LIBASSUAN_CFLAGS) $(GPG_ERROR_CFLAGS) -shared
22 |
23 | ICONS = icon-16.png
24 |
25 | nodist_gpgex_SOURCES = versioninfo.rc gpgex.manifest
26 | gpgex_SOURCES = \
27 | gpgex.def \
28 | exechelp.h exechelp.c \
29 | gpgex-class.h gpgex-class.cc \
30 | gpgex-factory.h gpgex-factory.cc \
31 | gpgex.h gpgex.cc \
32 | client.h client.cc \
33 | main.h debug.h main.cc \
34 | resource.h \
35 | $(ICONS)
36 |
37 | if HAVE_W64_SYSTEM
38 | libgpg-error.a:
39 | if [ -e "$$($(GPG_ERROR_CONFIG) --prefix)/lib64/libgpg-error.a" ]; then \
40 | ln -sf $$($(GPG_ERROR_CONFIG) --prefix)/lib64/libgpg-error.a .; \
41 | else \
42 | ln -sf $$($(GPG_ERROR_CONFIG) --prefix)/lib/libgpg-error.a .; \
43 | fi
44 | else
45 | libgpg-error.a:
46 | ln -sf $$($(GPG_ERROR_CONFIG) --prefix)/lib/libgpg-error.a .
47 | endif
48 |
49 | if HAVE_W64_SYSTEM
50 | libassuan.a:
51 | if [ -e "$$($(LIBASSUAN_CONFIG) --prefix)/lib64/libassuan.a" ]; then \
52 | ln -sf $$($(LIBASSUAN_CONFIG) --prefix)/lib64/libassuan.a .; \
53 | else \
54 | ln -sf $$($(LIBASSUAN_CONFIG) --prefix)/lib/libassuan.a .; \
55 | fi
56 | else
57 | libassuan.a:
58 | ln -sf $$($(LIBASSUAN_CONFIG) --prefix)/lib/libassuan.a .
59 | endif
60 |
61 | clean-local:
62 | rm -f libgpg-error.a libassuan.a
63 |
64 | #gpgex_LDADD = $(srcdir)/gpgex.def \
65 | # -L . -lshell32 -lcomdlg32 -ladvapi32
66 |
67 | gpgex_LDFLAGS = -static-libgcc -static-libstdc++
68 | # We need -loleaut32 for start_help() in gpgex.cc.
69 | gpgex_LDADD = $(srcdir)/gpgex.def -L . \
70 | -lshell32 -lgdi32 -lole32 -luuid -lgdiplus \
71 | ./libassuan.a ./libgpg-error.a -lws2_32 -loleaut32
72 |
73 | .rc.o:
74 | $(WINDRES) -I $(srcdir) -I . `test -f '$<' || echo '$(srcdir)/'`$< $@
75 |
--------------------------------------------------------------------------------
/doc/gpgex-de.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | Hilfe für die GnuPG Shell Extension (GpgEX)
6 |
7 |
8 |
13 | Die GNU Privacy Guard Erweiterungen für die Windows Explorer
14 | Umgebung erlaubt es ihnen, kryptographische Funktionen in
15 | Kleopatra über die Kontext-Menüs von Dateien aufzurufen.
16 |
17 |
Befehle
18 |
Entschlüsseln und überprüfen, Entschlüsseln, Überprüfen
19 |
20 | Entschlüsselt und/oder überprüft die ausgewählten Dateien.
21 | FIXME: Einen Link zur Gpg4win Dokumentation für die
22 | Entschlüssel- und Verifizier-Funktionen einbauen.
23 |
24 |
Signieren und verschlüsseln, Signieren, Verschlüsseln
25 |
26 | Signiert und/oder verschlüsselt die ausgewählten Dateien.
27 | FIXME: Einen Link zur Gpg4win Dokumentation für die
28 | Verschlüssel- und Signier-Funktionen einbauen.
29 |
30 |
Zertifikate importieren
31 |
32 | Import die Zertifikate in den ausgewählten Dateien.
33 |
34 |
Hilfe zu GpgEX
35 |
36 | Stellt diese Hilfe dar.
37 |
38 |
Über GpgEX
39 |
40 | Zeigt die Version von GpgEX an.
41 |
42 |
43 |
Debugging
44 |
45 | Falls nicht auf die GnuPG Benutzerschnittstelle zugegriffen werden kann, wird ein
46 | Nachrichtenfenster mit einer Fehlermeldung angezeigt. Um mehr
47 | Informationen zu erhalten, kann der Fehlerbericht von Kleopatra
48 | oder GPA eingesehen werden (Anleitung siehe Gpg4win-Kompendium),
49 | oder es kann eine GpgEX-Diagnosedatei angegeben werden. Dazu
50 | im Registrierungs-Editor den Schlüssel
51 | HKLM\Software\GNU\GnuPG
52 | auswählen, eine neue "Zeichenfolge" mit dem Namen GpgEX
53 | Debug File anlegen und als Wert einen Dateinamen
54 | (z.B. c:\temp\gpgex-debug-file.log)
55 | angeben. Informationen zum Protokoll werden dann nach einem
56 | Neustart von Windows an diese Datei angehangen.
57 |
58 |
Hinweis
59 |
60 | Mehr Informationen und aktuelle Programmversionen sind auf der
61 | Gpg4win Webpräsenz
62 | verfügbar.
63 |
64 |
65 |
66 |
--------------------------------------------------------------------------------
/src/main.h:
--------------------------------------------------------------------------------
1 | /* main.h - main prototypes
2 | Copyright (C) 2007 g10 Code GmbH
3 |
4 | This file is part of GpgEX.
5 |
6 | GpgEX is free software; you can redistribute it and/or
7 | modify it under the terms of the GNU Lesser General Public
8 | License as published by the Free Software Foundation; either
9 | version 2 of the License, or (at your option) any later version.
10 |
11 | GpgEX is distributed in the hope that it will be useful,
12 | but WITHOUT ANY WARRANTY; without even the implied warranty of
13 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 | GNU Lesser General Public License for more details.
15 |
16 | You should have received a copy of the GNU Lesser General Public
17 | License along with this program; if not, write to the Free Software
18 | Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
19 | 02110-1301, USA. */
20 |
21 | #ifndef MAIN_H
22 | #define MAIN_H 1
23 |
24 | #include
25 | #include "debug.h"
26 |
27 |
28 | #include /* For gettext */
29 |
30 | #define _(a) gettext (a)
31 | #define N_(a) gettext_noop (a)
32 |
33 | /* A pseudo function call that serves as a marker for the automated
34 | extraction of messages, but does not call gettext(). The run-time
35 | translation is done at a different place in the code.
36 | The argument, String, should be a literal string. Concatenated strings
37 | and other string expressions won't work.
38 | The macro's expansion is not parenthesized, so that it is suitable as
39 | initializer for static 'char[]' or 'const char[]' variables. */
40 | #define gettext_noop(String) String
41 |
42 |
43 |
44 | /* We use a class just for namespace cleanliness. */
45 | class gpgex_server
46 | {
47 | public:
48 | /* The instance of this DLL. */
49 | static HINSTANCE instance;
50 |
51 | /* Global reference counting for the server component. This is
52 | increased by acquiring references to any COM objects as well as
53 | when locking the server component, and needed to implement
54 | DllCanUnloadNow. */
55 |
56 | /* The number of references to this component. */
57 | static LONG refcount;
58 |
59 | static const char *ui_server;
60 |
61 | /* Acquire a reference to the server component. */
62 | static inline ULONG
63 | add_ref (void)
64 | {
65 | return InterlockedIncrement (&refcount);
66 | }
67 |
68 |
69 | /* Release a reference to the server component. */
70 | static inline ULONG
71 | release (void)
72 | {
73 | return InterlockedDecrement (&refcount);
74 | }
75 |
76 |
77 | };
78 |
79 |
80 | #define GUID_FMT "{%08lX-%04hX-%04hX-%02hhX%02hhX-%02hhX%02hhX%02hhX%02hhX%02hhX%02hhX}"
81 | #define GUID_ARG(x) (x).Data1, (x).Data2, (x).Data3, (x).Data4[0], \
82 | (x).Data4[1], (x).Data4[2], (x).Data4[3], (x).Data4[4], \
83 | (x).Data4[5], (x).Data4[6], (x).Data4[7]
84 |
85 | #endif
86 |
87 | extern "C" const char *get_gpg4win_dir (void);
88 |
--------------------------------------------------------------------------------
/src/versioninfo.rc.in:
--------------------------------------------------------------------------------
1 | /* versioninfo.rc.in -*- c -*-
2 | * Copyright (C) 2005, 2007, 2009, 2013 g10 Code GmbH
3 | *
4 | * This file is free software; as a special exception the author gives
5 | * unlimited permission to copy and/or distribute it, with or without
6 | * modifications, as long as this notice is preserved.
7 | *
8 | * This program is distributed in the hope that it will be useful, but
9 | * WITHOUT ANY WARRANTY, to the extent permitted by law; without even the
10 | * implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
11 | */
12 |
13 | /* This file is processed by configure to create versioninfo.rc */
14 |
15 | #line __LINE__ "versioninfo.rc.in"
16 |
17 | #include "resource.h"
18 |
19 | #include
20 |
21 | 1 ICON "./gnupg.ico"
22 |
23 | 1 VERSIONINFO
24 | FILEVERSION @BUILD_FILEVERSION@
25 | PRODUCTVERSION @BUILD_FILEVERSION@
26 | FILEFLAGSMASK 0x3fL
27 | #ifdef _DEBUG
28 | FILEFLAGS 0x01L /* VS_FF_DEBUG (0x1)*/
29 | #else
30 | FILEFLAGS 0x00L
31 | #endif
32 | FILEOS 0x40004L /* VOS_NT (0x40000) | VOS__WINDOWS32 (0x4) */
33 | FILETYPE 0x2L /* VFT_DLL (0x2) */
34 | FILESUBTYPE 0x0L /* VFT2_UNKNOWN */
35 | BEGIN
36 | BLOCK "StringFileInfo"
37 | BEGIN
38 | BLOCK "040904b0" /* US English (0409), Unicode (04b0) */
39 | BEGIN
40 | VALUE "FileDescription", "GpgEX - GnuPG shell extensions\0"
41 | VALUE "InternalName", "gpgex\0"
42 | VALUE "OriginalFilename", "gpgex.dll\0"
43 | VALUE "ProductName", "GpgEX\0"
44 | VALUE "ProductVersion", "@VERSION@\0"
45 | VALUE "CompanyName", "g10 Code GmbH\0"
46 | VALUE "FileVersion", "@VERSION@\0"
47 | VALUE "LegalCopyright", "Copyright \xa9 2013 g10 Code GmbH\r\n \
48 | This program is free software; you can redistribute it and/or modify it \
49 | under the terms of the GNU Lesser General Public License as published by \
50 | the Free Software Foundation; either version 2.1 of the License, \
51 | or (at your option) any later version.\0"
52 | END
53 | END
54 | BLOCK "VarFileInfo"
55 | BEGIN
56 | VALUE "Translation", 0x409, 1200
57 | END
58 | END
59 |
60 |
61 | /* Fixme: It was not possible to convince Windows to use the manifest.
62 | * Thus we resort to static linking of gpgex with the helper
63 | * libraries. The idea was to put have this directory layout
64 | *
65 | * bin/gpgex.dll
66 | * bin/GNU.GnuPG.Gcc64Support/GNU.GnuPG.Gcc64Support.manifest
67 | * bin/GNU.GnuPG.Gcc64Support/libstdc++-6.dll
68 | * bin/GNU.GnuPG.Gcc64Support/libgcc_s_sjlj-1.dll
69 | *
70 | * to cope with the 64 bit and 32 bit versions of the gcc support
71 | * libraries. It works with exe files but not with DLLs loaded. Any
72 | * hints to fix this are welcome.
73 | */
74 | /* ISOLATIONAWARE_MANIFEST_RESOURCE_ID RT_MANIFEST "gpgex.manifest" */
75 |
76 |
77 | /*
78 | * Our bitmaps.
79 | */
80 | IDI_ICON_16 RCDATA "icon-16.png"
81 |
--------------------------------------------------------------------------------
/po/ru.po:
--------------------------------------------------------------------------------
1 | # SOME DESCRIPTIVE TITLE.
2 | # Copyright (C) YEAR g10 Code GmbH
3 | # This file is distributed under the same license as the PACKAGE package.
4 | # FIRST AUTHOR , YEAR.
5 | #
6 | msgid ""
7 | msgstr ""
8 | "Project-Id-Version: GpgEX\n"
9 | "Report-Msgid-Bugs-To: http://bugs.gnupg.org\n"
10 | "PO-Revision-Date: 2016-05-10 08:40+0200\n"
11 | "Last-Translator: Sergei Smirnov \n"
12 | "Language-Team: Sergei Smirnov \n"
13 | "Language: \n"
14 | "MIME-Version: 1.0\n"
15 | "Content-Type: text/plain; charset=utf-8\n"
16 | "Content-Transfer-Encoding: 8bit\n"
17 | "X-Poedit-Language: Russian\n"
18 | "X-Poedit-Country: RUSSIAN FEDERATION\n"
19 |
20 | #, fuzzy, c-format
21 | msgid ""
22 | "Can not connect to the GnuPG user interface%s%s%s:\r\n"
23 | "%s"
24 | msgstr ""
25 | "Нет доступа к программе UI-server%s%s%s:\\r\n"
26 | "%s"
27 |
28 | #, c-format
29 | msgid ""
30 | "Error returned by the GnuPG user interface%s%s%s:\r\n"
31 | "%s"
32 | msgstr ""
33 |
34 | msgid "About GpgEX"
35 | msgstr ""
36 |
37 | msgid "Decrypt and verify"
38 | msgstr "Расшифровать и проверить"
39 |
40 | msgid "Decrypt"
41 | msgstr "Расшифровать"
42 |
43 | msgid "Verify"
44 | msgstr "Проверить"
45 |
46 | msgid "Sign and encrypt"
47 | msgstr "Подписать и Зашифровать"
48 |
49 | msgid "Encrypt"
50 | msgstr "Зашифровать"
51 |
52 | msgid "Sign"
53 | msgstr "Подписать"
54 |
55 | msgid "Import keys"
56 | msgstr "Импортировать ключи"
57 |
58 | msgid "Create checksums"
59 | msgstr "Создать контрольные суммы"
60 |
61 | msgid "Verify checksums"
62 | msgstr "Проверить контрольные суммы"
63 |
64 | msgid "More GpgEX options"
65 | msgstr "Другие параметры GpgEX"
66 |
67 | msgid "Show the version of GpgEX."
68 | msgstr ""
69 |
70 | msgid "Decrypt and verify the marked files."
71 | msgstr "Расшифровать и проверить отмеченные файлы."
72 |
73 | msgid "Decrypt the marked files."
74 | msgstr "Расшифровать отмеченные файлы."
75 |
76 | msgid "Verify the marked files."
77 | msgstr "Проверить отмеченные файлы."
78 |
79 | msgid "Sign and encrypt the marked files."
80 | msgstr "подписать и Зашифровать отмеченные файлы."
81 |
82 | msgid "Encrypt the marked files."
83 | msgstr "Зашифровать отмеченные файлы."
84 |
85 | msgid "Sign the marked files."
86 | msgstr "Подписать отмеченные файлы."
87 |
88 | msgid "Import the marked files."
89 | msgstr "Импортировать отмеченные файлы."
90 |
91 | msgid "Create checksums."
92 | msgstr "Создать контрольные суммы."
93 |
94 | msgid "Verify checksums."
95 | msgstr "Проверить контрольные суммы."
96 |
97 | msgid "Show more GpgEX options."
98 | msgstr "Другие параметры GpgEX."
99 |
100 | #. TRANSLATORS: See the source for the full english text.
101 | msgid "-#GpgEXFullHelpText#-"
102 | msgstr ""
103 |
104 | #, c-format
105 | msgid "This is GpgEX version %s (%s)"
106 | msgstr ""
107 |
108 | #~ msgid "Help on GpgEX"
109 | #~ msgstr "Помощь по GpgEX"
110 |
111 | #~ msgid "Invoke the GpgEX documentation."
112 | #~ msgstr "Открыть документацию GpgEX."
113 |
--------------------------------------------------------------------------------
/po/es.po:
--------------------------------------------------------------------------------
1 | # translation of GPGex.
2 | # Copyright (C) 2008 g10 Code GmbH
3 | # This file is distributed under the same license as the GPGex package.
4 | # Diego Escalante Urrelo , 2008, 2013.
5 | #
6 | msgid ""
7 | msgstr ""
8 | "Project-Id-Version: GpgEX 1.0.0\n"
9 | "Report-Msgid-Bugs-To: http://bugs.gnupg.org\n"
10 | "PO-Revision-Date: 2013-06-26 16:29+0200\n"
11 | "Last-Translator: Diego Escalante Urrelo \n"
12 | "Language-Team: Spanish \n"
13 | "Language: es\n"
14 | "MIME-Version: 1.0\n"
15 | "Content-Type: text/plain; charset=utf-8\n"
16 | "Content-Transfer-Encoding: 8bit\n"
17 |
18 | #, c-format
19 | msgid ""
20 | "Can not connect to the GnuPG user interface%s%s%s:\r\n"
21 | "%s"
22 | msgstr ""
23 | "No se pudo acceder a la interface de usuario de GnuPG%s%s%s:\\r\n"
24 | "%s"
25 |
26 | #, c-format
27 | msgid ""
28 | "Error returned by the GnuPG user interface%s%s%s:\r\n"
29 | "%s"
30 | msgstr ""
31 | "Error de la interface de usuario de GnuPG%s%s%s:\r\n"
32 | "%s"
33 |
34 | msgid "About GpgEX"
35 | msgstr "Acerca de GpgEX"
36 |
37 | msgid "Decrypt and verify"
38 | msgstr "Descifrar y verificar."
39 |
40 | msgid "Decrypt"
41 | msgstr "Descifrar"
42 |
43 | msgid "Verify"
44 | msgstr "Verificar"
45 |
46 | msgid "Sign and encrypt"
47 | msgstr "Firmar y cifrar"
48 |
49 | msgid "Encrypt"
50 | msgstr "Cifrar"
51 |
52 | msgid "Sign"
53 | msgstr "Firmar"
54 |
55 | msgid "Import keys"
56 | msgstr "Importar claves"
57 |
58 | msgid "Create checksums"
59 | msgstr "Crear sumas de comprobación."
60 |
61 | msgid "Verify checksums"
62 | msgstr "Verificar sumas de comprobación."
63 |
64 | msgid "More GpgEX options"
65 | msgstr "Más opciones de GpgEX"
66 |
67 | msgid "Show the version of GpgEX."
68 | msgstr "Mostrar la versión de GpgEX"
69 |
70 | msgid "Decrypt and verify the marked files."
71 | msgstr "Descifrar y verificar los archivos marcados."
72 |
73 | msgid "Decrypt the marked files."
74 | msgstr "Descifrar los archivos marcados."
75 |
76 | msgid "Verify the marked files."
77 | msgstr "Verificar los archivos marcados."
78 |
79 | msgid "Sign and encrypt the marked files."
80 | msgstr "Firmar y cifrar los archivos marcados."
81 |
82 | msgid "Encrypt the marked files."
83 | msgstr "Cifrar los archivos marcados."
84 |
85 | msgid "Sign the marked files."
86 | msgstr "Firmar los archivos marcados."
87 |
88 | msgid "Import the marked files."
89 | msgstr "Importar los archivos marcados."
90 |
91 | msgid "Create checksums."
92 | msgstr "Crear sumas de comprobación."
93 |
94 | msgid "Verify checksums."
95 | msgstr "Verificar sumas de comprobación."
96 |
97 | msgid "Show more GpgEX options."
98 | msgstr "Mostrar más opciones de GpgEX."
99 |
100 | #. TRANSLATORS: See the source for the full english text.
101 | msgid "-#GpgEXFullHelpText#-"
102 | msgstr ""
103 |
104 | #, c-format
105 | msgid "This is GpgEX version %s (%s)"
106 | msgstr "Esto es GpgEX versión %s (%s)"
107 |
108 | #~ msgid "Help on GpgEX"
109 | #~ msgstr "Ayuda de GpgEX"
110 |
111 | #~ msgid "Invoke the GpgEX documentation."
112 | #~ msgstr "Invocar la documentación de GpgEX."
113 |
--------------------------------------------------------------------------------
/po/zh_CN.po:
--------------------------------------------------------------------------------
1 | # Chinese (China) Translation.
2 | # Copyright (C) 2015 Free Software Foundation, Inc.
3 | # This file is distributed under the same license as the GpgEx package.
4 | # Mingye Wang (Arthur2e5) ,2015.
5 | #
6 | msgid ""
7 | msgstr ""
8 | "Project-Id-Version: GpgEX\n"
9 | "Report-Msgid-Bugs-To: http://bugs.gnupg.org\n"
10 | "PO-Revision-Date: 2015-08-15 20:50+0800\n"
11 | "Last-Translator: Mingye Wang (Arthur2e5) \n"
12 | "Language-Team: \n"
13 | "Language: zh_CN\n"
14 | "MIME-Version: 1.0\n"
15 | "Content-Type: text/plain; charset=UTF-8\n"
16 | "Content-Transfer-Encoding: 8bit\n"
17 | "X-Generator: Poedit 1.8.4\n"
18 | "Plural-Forms: nplurals=1; plural=0;\n"
19 |
20 | #, c-format
21 | msgid ""
22 | "Can not connect to the GnuPG user interface%s%s%s:\r\n"
23 | "%s"
24 | msgstr ""
25 | "无法连接到 GnuPG 用户界面%s%s%s:\n"
26 | "%s"
27 |
28 | #, c-format
29 | msgid ""
30 | "Error returned by the GnuPG user interface%s%s%s:\r\n"
31 | "%s"
32 | msgstr ""
33 | "GnuPG 用户界面返回的错误%s%s%s:\n"
34 | "%s"
35 |
36 | msgid "About GpgEX"
37 | msgstr "关于 GpgEX"
38 |
39 | msgid "Decrypt and verify"
40 | msgstr "解密并验证"
41 |
42 | msgid "Decrypt"
43 | msgstr "解密"
44 |
45 | msgid "Verify"
46 | msgstr "验证"
47 |
48 | msgid "Sign and encrypt"
49 | msgstr "签名并加密"
50 |
51 | msgid "Encrypt"
52 | msgstr "加密"
53 |
54 | msgid "Sign"
55 | msgstr "签名"
56 |
57 | msgid "Import keys"
58 | msgstr "导入密钥"
59 |
60 | msgid "Create checksums"
61 | msgstr "生成校验值"
62 |
63 | msgid "Verify checksums"
64 | msgstr "验证校验值"
65 |
66 | msgid "More GpgEX options"
67 | msgstr "更多 GpgEX 选项"
68 |
69 | msgid "Show the version of GpgEX."
70 | msgstr "显示 GpgEx 版本。"
71 |
72 | msgid "Decrypt and verify the marked files."
73 | msgstr "解密并验证选中的文件。"
74 |
75 | msgid "Decrypt the marked files."
76 | msgstr "解密选中的文件。"
77 |
78 | msgid "Verify the marked files."
79 | msgstr "验证选中的文件。"
80 |
81 | msgid "Sign and encrypt the marked files."
82 | msgstr "签名并加密选中的文件。"
83 |
84 | msgid "Encrypt the marked files."
85 | msgstr "加密选中的文件。"
86 |
87 | msgid "Sign the marked files."
88 | msgstr "签名选中的文件。"
89 |
90 | msgid "Import the marked files."
91 | msgstr "导入选中的文件。"
92 |
93 | msgid "Create checksums."
94 | msgstr "生成校验值。"
95 |
96 | msgid "Verify checksums."
97 | msgstr "验证校验值。"
98 |
99 | msgid "Show more GpgEX options."
100 | msgstr "显示更多 GpgEX 选项。"
101 |
102 | #. TRANSLATORS: See the source for the full english text.
103 | msgid "-#GpgEXFullHelpText#-"
104 | msgstr ""
105 | "GpgEX 是用于资源管理器的数据加密和签名插件。\n"
106 | "它使用 GnuPG 软件 (http://www.gnupg.org)。\n"
107 | "\n"
108 | "GpgEX 是自由软件;你可以按照 GNU Lesser General Public License\n"
109 | "(以自由软件基金会发布的版本为准)版本 2.1 或(如你所愿)任意更新的版本\n"
110 | "使用和分发它。\n"
111 | "\n"
112 | "GpgEX 在希望其能够有用的情况下分发,但不含任何保证——甚至不含隐含的\n"
113 | "对其商品性和对特定用途的适用性的保证。要获取更多信息,请参阅 GNU LGPL。\n"
114 | "你应当与本程序一起获得了一份 GNU Lesser General Public Licence 的副本;\n"
115 | "若没有,请参见 。"
116 |
117 | #, c-format
118 | msgid "This is GpgEX version %s (%s)"
119 | msgstr "这里是 GpgEX 版本 %s (%s)"
120 |
121 | #~ msgid "Help on GpgEX"
122 | #~ msgstr "GpgEX 帮助"
123 |
124 | #~ msgid "Invoke the GpgEX documentation."
125 | #~ msgstr "调用 GpgEx 文档。"
126 |
--------------------------------------------------------------------------------
/po/zh_TW.po:
--------------------------------------------------------------------------------
1 | # Chinese (Taiwan) Translation.
2 | # Copyright (C) 2015 Free Software Foundation, Inc.
3 | # This file is distributed under the same license as the GpgEx package.
4 | # Mingye Wang (Arthur2e5) ,2015.
5 | #
6 | msgid ""
7 | msgstr ""
8 | "Project-Id-Version: GpgEX\n"
9 | "Report-Msgid-Bugs-To: http://bugs.gnupg.org\n"
10 | "PO-Revision-Date: 2015-08-15 20:50+0800\n"
11 | "Last-Translator: Mingye Wang (Arthur2e5) \n"
12 | "Language-Team: \n"
13 | "Language: zh_TW\n"
14 | "MIME-Version: 1.0\n"
15 | "Content-Type: text/plain; charset=UTF-8\n"
16 | "Content-Transfer-Encoding: 8bit\n"
17 | "X-Generator: Poedit 1.8.4\n"
18 | "Plural-Forms: nplurals=1; plural=0;\n"
19 |
20 | #, c-format
21 | msgid ""
22 | "Can not connect to the GnuPG user interface%s%s%s:\r\n"
23 | "%s"
24 | msgstr ""
25 | "無法連線到 GnuPG 使用者介面%s%s%s:\n"
26 | "%s"
27 |
28 | #, c-format
29 | msgid ""
30 | "Error returned by the GnuPG user interface%s%s%s:\r\n"
31 | "%s"
32 | msgstr ""
33 | "GnuPG 使用者介面返回的錯誤%s%s%s:\n"
34 | "%s"
35 |
36 | msgid "About GpgEX"
37 | msgstr "關於 GpgEX"
38 |
39 | msgid "Decrypt and verify"
40 | msgstr "解密並驗證"
41 |
42 | msgid "Decrypt"
43 | msgstr "解密"
44 |
45 | msgid "Verify"
46 | msgstr "驗證"
47 |
48 | msgid "Sign and encrypt"
49 | msgstr "簽名並加密"
50 |
51 | msgid "Encrypt"
52 | msgstr "加密"
53 |
54 | msgid "Sign"
55 | msgstr "簽名"
56 |
57 | msgid "Import keys"
58 | msgstr "匯入金鑰"
59 |
60 | msgid "Create checksums"
61 | msgstr "生成校驗值"
62 |
63 | msgid "Verify checksums"
64 | msgstr "驗證校驗值"
65 |
66 | msgid "More GpgEX options"
67 | msgstr "更多 GpgEX 選項"
68 |
69 | msgid "Show the version of GpgEX."
70 | msgstr "顯示 GpgEx 版本。"
71 |
72 | msgid "Decrypt and verify the marked files."
73 | msgstr "解密並驗證選中的檔案。"
74 |
75 | msgid "Decrypt the marked files."
76 | msgstr "解密選中的檔案。"
77 |
78 | msgid "Verify the marked files."
79 | msgstr "驗證選中的檔案。"
80 |
81 | msgid "Sign and encrypt the marked files."
82 | msgstr "簽名並加密選中的檔案。"
83 |
84 | msgid "Encrypt the marked files."
85 | msgstr "加密選中的檔案。"
86 |
87 | msgid "Sign the marked files."
88 | msgstr "簽名選中的檔案。"
89 |
90 | msgid "Import the marked files."
91 | msgstr "匯入選中的檔案。"
92 |
93 | msgid "Create checksums."
94 | msgstr "生成校驗值。"
95 |
96 | msgid "Verify checksums."
97 | msgstr "驗證校驗值。"
98 |
99 | msgid "Show more GpgEX options."
100 | msgstr "顯示更多 GpgEX 選項。"
101 |
102 | #. TRANSLATORS: See the source for the full english text.
103 | msgid "-#GpgEXFullHelpText#-"
104 | msgstr ""
105 | "GpgEX 是用於資源管理器的資料加密和簽名外掛。\n"
106 | "它使用 GnuPG 軟體 (http://www.gnupg.org)。\n"
107 | "\n"
108 | "GpgEX 是自由軟體;你可以按照 GNU Lesser General Public License\n"
109 | "(以自由軟體基金會發布的版本為準)版本 2.1 或(如你所願)任意更新的版本\n"
110 | "使用和分發它。\n"
111 | "\n"
112 | "GpgEX 在希望其能夠有用的情況下分發,但不含任何保證——甚至不含隱含的\n"
113 | "對其商品性和對特定用途的適用性的保證。要獲取更多資訊,請參閱 GNU LGPL。\n"
114 | "你應當與本程式一起獲得了一份 GNU Lesser General Public Licence 的副本;\n"
115 | "若沒有,請參見 。"
116 |
117 | #, c-format
118 | msgid "This is GpgEX version %s (%s)"
119 | msgstr "這裡是 GpgEX 版本 %s (%s)"
120 |
121 | #~ msgid "Help on GpgEX"
122 | #~ msgstr "GpgEX 幫助"
123 |
124 | #~ msgid "Invoke the GpgEX documentation."
125 | #~ msgstr "呼叫 GpgEx 文件。"
126 |
--------------------------------------------------------------------------------
/m4/progtest.m4:
--------------------------------------------------------------------------------
1 | # progtest.m4 serial 3 (gettext-0.12)
2 | dnl Copyright (C) 1996-2003 Free Software Foundation, Inc.
3 | dnl This file is free software, distributed under the terms of the GNU
4 | dnl General Public License. As a special exception to the GNU General
5 | dnl Public License, this file may be distributed as part of a program
6 | dnl that contains a configuration script generated by Autoconf, under
7 | dnl the same distribution terms as the rest of that program.
8 | dnl
9 | dnl This file can can be used in projects which are not available under
10 | dnl the GNU General Public License or the GNU Library General Public
11 | dnl License but which still want to provide support for the GNU gettext
12 | dnl functionality.
13 | dnl Please note that the actual code of the GNU gettext library is covered
14 | dnl by the GNU Library General Public License, and the rest of the GNU
15 | dnl gettext package package is covered by the GNU General Public License.
16 | dnl They are *not* in the public domain.
17 |
18 | dnl Authors:
19 | dnl Ulrich Drepper , 1996.
20 |
21 | # Search path for a program which passes the given test.
22 |
23 | dnl AM_PATH_PROG_WITH_TEST(VARIABLE, PROG-TO-CHECK-FOR,
24 | dnl TEST-PERFORMED-ON-FOUND_PROGRAM [, VALUE-IF-NOT-FOUND [, PATH]])
25 | AC_DEFUN([AM_PATH_PROG_WITH_TEST],
26 | [
27 | # Prepare PATH_SEPARATOR.
28 | # The user is always right.
29 | if test "${PATH_SEPARATOR+set}" != set; then
30 | echo "#! /bin/sh" >conf$$.sh
31 | echo "exit 0" >>conf$$.sh
32 | chmod +x conf$$.sh
33 | if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then
34 | PATH_SEPARATOR=';'
35 | else
36 | PATH_SEPARATOR=:
37 | fi
38 | rm -f conf$$.sh
39 | fi
40 |
41 | # Find out how to test for executable files. Don't use a zero-byte file,
42 | # as systems may use methods other than mode bits to determine executability.
43 | cat >conf$$.file <<_ASEOF
44 | #! /bin/sh
45 | exit 0
46 | _ASEOF
47 | chmod +x conf$$.file
48 | if test -x conf$$.file >/dev/null 2>&1; then
49 | ac_executable_p="test -x"
50 | else
51 | ac_executable_p="test -f"
52 | fi
53 | rm -f conf$$.file
54 |
55 | # Extract the first word of "$2", so it can be a program name with args.
56 | set dummy $2; ac_word=[$]2
57 | AC_MSG_CHECKING([for $ac_word])
58 | AC_CACHE_VAL(ac_cv_path_$1,
59 | [case "[$]$1" in
60 | [[\\/]]* | ?:[[\\/]]*)
61 | ac_cv_path_$1="[$]$1" # Let the user override the test with a path.
62 | ;;
63 | *)
64 | ac_save_IFS="$IFS"; IFS=$PATH_SEPARATOR
65 | for ac_dir in ifelse([$5], , $PATH, [$5]); do
66 | IFS="$ac_save_IFS"
67 | test -z "$ac_dir" && ac_dir=.
68 | for ac_exec_ext in '' $ac_executable_extensions; do
69 | if $ac_executable_p "$ac_dir/$ac_word$ac_exec_ext"; then
70 | if [$3]; then
71 | ac_cv_path_$1="$ac_dir/$ac_word$ac_exec_ext"
72 | break 2
73 | fi
74 | fi
75 | done
76 | done
77 | IFS="$ac_save_IFS"
78 | dnl If no 4th arg is given, leave the cache variable unset,
79 | dnl so AC_PATH_PROGS will keep looking.
80 | ifelse([$4], , , [ test -z "[$]ac_cv_path_$1" && ac_cv_path_$1="$4"
81 | ])dnl
82 | ;;
83 | esac])dnl
84 | $1="$ac_cv_path_$1"
85 | if test ifelse([$4], , [-n "[$]$1"], ["[$]$1" != "$4"]); then
86 | AC_MSG_RESULT([$]$1)
87 | else
88 | AC_MSG_RESULT(no)
89 | fi
90 | AC_SUBST($1)dnl
91 | ])
92 |
--------------------------------------------------------------------------------
/src/standalone.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
101 |
--------------------------------------------------------------------------------
/po/ar.po:
--------------------------------------------------------------------------------
1 | # SOME DESCRIPTIVE TITLE.
2 | # Copyright (C) YEAR g10 Code GmbH
3 | # This file is distributed under the same license as the PACKAGE package.
4 | # Ahmad Gharbeia , 2008, 2013.
5 | #
6 | msgid ""
7 | msgstr ""
8 | "Project-Id-Version: gpgex\n"
9 | "Report-Msgid-Bugs-To: http://bugs.gnupg.org\n"
10 | "PO-Revision-Date: 2013-07-19 22:21+0430\n"
11 | "Last-Translator: Ahmad Gharbeia \n"
12 | "Language-Team: Arabic <>\n"
13 | "Language: \n"
14 | "MIME-Version: 1.0\n"
15 | "Content-Type: text/plain; charset=UTF-8\n"
16 | "Content-Transfer-Encoding: 8bit\n"
17 | "Plural-Forms: nplurals=9; plural=(n!=1);\n"
18 | "X-Poedit-Language: Arabic\n"
19 | "X-Poedit-SourceCharset: utf-8\n"
20 |
21 | #, c-format
22 | msgid ""
23 | "Can not connect to the GnuPG user interface%s%s%s:\r\n"
24 | "%s"
25 | msgstr ""
26 | "تعذّر الاتصال بواجهة المستخدم GnuPG%s%s%s:\n"
27 | "%s"
28 |
29 | #, c-format
30 | msgid ""
31 | "Error returned by the GnuPG user interface%s%s%s:\r\n"
32 | "%s"
33 | msgstr ""
34 | "الخطأ الذي أرجعته واجهة المستخدم GnuPG%s%s%s:\n"
35 | "%s"
36 |
37 | msgid "About GpgEX"
38 | msgstr "عن GpgEX"
39 |
40 | msgid "Decrypt and verify"
41 | msgstr "ظهِّر و تحقق"
42 |
43 | msgid "Decrypt"
44 | msgstr "ظهِّر"
45 |
46 | msgid "Verify"
47 | msgstr "تحقق"
48 |
49 | msgid "Sign and encrypt"
50 | msgstr "وقِّع و عمِّ"
51 |
52 | msgid "Encrypt"
53 | msgstr "عمِّ"
54 |
55 | msgid "Sign"
56 | msgstr "وقِّع"
57 |
58 | msgid "Import keys"
59 | msgstr "استورد المفاتيح"
60 |
61 | msgid "Create checksums"
62 | msgstr "احسب تلبيدات"
63 |
64 | msgid "Verify checksums"
65 | msgstr "افحص التلبيدات"
66 |
67 | msgid "More GpgEX options"
68 | msgstr "مزيد من خيارات GpgEx"
69 |
70 | msgid "Show the version of GpgEX."
71 | msgstr "أظهر رقم إصدارة GpgEX"
72 |
73 | msgid "Decrypt and verify the marked files."
74 | msgstr "ظهِّر و تحقق من الملفات المؤشَّرة."
75 |
76 | msgid "Decrypt the marked files."
77 | msgstr "ظهِّر الملفات المؤشَّرة."
78 |
79 | msgid "Verify the marked files."
80 | msgstr "تحقق من توقيعات الملفات المؤشَّرة."
81 |
82 | msgid "Sign and encrypt the marked files."
83 | msgstr "وقِّع و عمِّ الملفات المؤشَّرة."
84 |
85 | msgid "Encrypt the marked files."
86 | msgstr "عمِّ الملفات المؤشَّرة."
87 |
88 | msgid "Sign the marked files."
89 | msgstr "وقِّع الملفات المؤشَّرة."
90 |
91 | msgid "Import the marked files."
92 | msgstr "استورد الملفات المؤشَّرة."
93 |
94 | msgid "Create checksums."
95 | msgstr "احسب تلبيدات."
96 |
97 | msgid "Verify checksums."
98 | msgstr "افحص التلبيدات."
99 |
100 | msgid "Show more GpgEX options."
101 | msgstr "أظهر مزيدا من خيارات GpgEx."
102 |
103 | #. TRANSLATORS: See the source for the full english text.
104 | msgid "-#GpgEXFullHelpText#-"
105 | msgstr ""
106 | "GpgEX مُلحَقَة لإنترنت إكسبلورَر لتعمية البيانات و التوقيع الرقمي\n"
107 | "و هي تستخدم أداة GnuPG (http://www.gnupg.org).\n"
108 | "\n"
109 | "GpgEX برمجية حُرَّة; لك حق توزيعها و/أو تعديلها وفق شروط\n"
110 | "رخصة گنو العمومية الصغرى التي تنشرها مؤسسة البرمجيات الحُرَّة\n"
111 | "إما في إصدارتها رقم 2.1 أو (إن أردت) أي إصدارة لاحقة.\n"
112 | "\n"
113 | "GpgEX منشورة بِنِيّة أن تكون مفيدة لكن بلا أي ضمانات،\n"
114 | "و لا حتّى الضمان الضمني لصلاحيتها كسلعة و لا ملاءمتها لأي غرض بعينه.\n"
115 | "طالع نصّ \"رخصة گنو العمومية الصغرى لمزيد من التفاصيل.\n"
116 | "\n"
117 | "يُفترض أن تكون قد حصلت مع هذه البرمجية على نسخة من نصّ رخصة گنو العموميةالصغرى "
118 | "المنشور في ."
119 |
120 | #, c-format
121 | msgid "This is GpgEX version %s (%s)"
122 | msgstr "هذه إصدارة GpgEX رقم %s (%s)"
123 |
124 | #~ msgid "Help on GpgEX"
125 | #~ msgstr "مساعدة حول GpgEx"
126 |
127 | #~ msgid "Invoke the GpgEX documentation."
128 | #~ msgstr "طالع وثائق GpgEx"
129 |
--------------------------------------------------------------------------------
/po/fr.po:
--------------------------------------------------------------------------------
1 | # French translations for gpgex package.
2 | # Copyright (C) 2015 g10 Code GmbH
3 | # This file is distributed under the same license as the gpgex package.
4 | #
5 | # Olivier Serve , 2015.
6 | msgid ""
7 | msgstr ""
8 | "Project-Id-Version: gpgex 1.0.0\n"
9 | "Report-Msgid-Bugs-To: http://bugs.gnupg.org\n"
10 | "PO-Revision-Date: 2015-09-09 12:19+0200\n"
11 | "Last-Translator: Olivier Serve \n"
12 | "Language-Team: French \n"
13 | "Language: de\n"
14 | "MIME-Version: 1.0\n"
15 | "Content-Type: text/plain; charset=UTF-8\n"
16 | "Content-Transfer-Encoding: 8bit\n"
17 | "Plural-Forms: nplurals=2; plural=(n != 1);\n"
18 | "X-Generator: Lokalize 1.5\n"
19 |
20 | #, c-format
21 | msgid ""
22 | "Can not connect to the GnuPG user interface%s%s%s:\r\n"
23 | "%s"
24 | msgstr ""
25 | "Impossible de se connecter à l'interface utilisateur GnuPG%s%s%s:\r\n"
26 | "%s"
27 |
28 | #, c-format
29 | msgid ""
30 | "Error returned by the GnuPG user interface%s%s%s:\r\n"
31 | "%s"
32 | msgstr ""
33 | "Erreur retournée par l'interface utilisateur GnuPG%s%s%s:\r\n"
34 | "%s"
35 |
36 | msgid "About GpgEX"
37 | msgstr "À propos de GpgEX"
38 |
39 | msgid "Decrypt and verify"
40 | msgstr "Déchiffrer et vérifier"
41 |
42 | msgid "Decrypt"
43 | msgstr "Déchiffrer"
44 |
45 | msgid "Verify"
46 | msgstr "Vérifier"
47 |
48 | msgid "Sign and encrypt"
49 | msgstr "Signer et chiffrer"
50 |
51 | msgid "Encrypt"
52 | msgstr "Chiffrer"
53 |
54 | msgid "Sign"
55 | msgstr "Signer"
56 |
57 | msgid "Import keys"
58 | msgstr "Importer des clés"
59 |
60 | msgid "Create checksums"
61 | msgstr "Créer des sommes de contrôle"
62 |
63 | msgid "Verify checksums"
64 | msgstr "Vérifier les sommes de contrôle"
65 |
66 | msgid "More GpgEX options"
67 | msgstr "Plus d'options GpgEX"
68 |
69 | msgid "Show the version of GpgEX."
70 | msgstr "Voir la version de GpgEX."
71 |
72 | msgid "Decrypt and verify the marked files."
73 | msgstr "Déchiffrer et vérifier les fichiers marqués."
74 |
75 | msgid "Decrypt the marked files."
76 | msgstr "Déchiffrer les fichiers marqués."
77 |
78 | msgid "Verify the marked files."
79 | msgstr "Vérifier les fichiers marqués."
80 |
81 | msgid "Sign and encrypt the marked files."
82 | msgstr "Signer et chiffrer les fichiers marqués."
83 |
84 | msgid "Encrypt the marked files."
85 | msgstr "Chiffrer les fichier marqués"
86 |
87 | msgid "Sign the marked files."
88 | msgstr "Signer les fichiers marqués."
89 |
90 | msgid "Import the marked files."
91 | msgstr "Importer les fichiers marqués."
92 |
93 | msgid "Create checksums."
94 | msgstr "Créer des sommes de contrôle."
95 |
96 | msgid "Verify checksums."
97 | msgstr "Vérifier des sommes de contrôle."
98 |
99 | msgid "Show more GpgEX options."
100 | msgstr "Montrer plus d'options GpgEX."
101 |
102 | #. TRANSLATORS: See the source for the full english text.
103 | msgid "-#GpgEXFullHelpText#-"
104 | msgstr ""
105 | "GpgEX est une extension de l'Explorateur qui lui permet\n"
106 | "de chiffrer ou signer numériquement les données à l'aide de\n"
107 | "PGP / MIME ou du standard Internet S / MIME sur la base\n"
108 | "du logiciel GnuPG ().\n"
109 | "\n"
110 | "GpgEX est un logiciel libre. Vous pouvez l'utiliser dans les conditions\n"
111 | "GNU Lesser General Public License telle que publiée par la Free Software\n"
112 | "Fondation, le redistribuer et / ou le modifier;\n"
113 | "soit la version 2.1 de la Licence, ou (à votre choix)\n"
114 | "toute version ultérieure.\n"
115 | "\n"
116 | "Vous pouvez accéder à la licence GNU Lesser General Public License\n"
117 | "à l'adresse WEB : ."
118 |
119 | #, c-format
120 | msgid "This is GpgEX version %s (%s)"
121 | msgstr "GpgEX Version %s (%s)"
122 |
123 | #~ msgid "Help on GpgEX"
124 | #~ msgstr "Aide sur GpgEX"
125 |
126 | #~ msgid "Invoke the GpgEX documentation."
127 | #~ msgstr "Appel à la documentation GpgEX."
128 |
--------------------------------------------------------------------------------
/m4/iconv.m4:
--------------------------------------------------------------------------------
1 | # iconv.m4 serial AM4 (gettext-0.11.3)
2 | dnl Copyright (C) 2000-2002 Free Software Foundation, Inc.
3 | dnl This file is free software, distributed under the terms of the GNU
4 | dnl General Public License. As a special exception to the GNU General
5 | dnl Public License, this file may be distributed as part of a program
6 | dnl that contains a configuration script generated by Autoconf, under
7 | dnl the same distribution terms as the rest of that program.
8 |
9 | dnl From Bruno Haible.
10 |
11 | AC_DEFUN([AM_ICONV_LINKFLAGS_BODY],
12 | [
13 | dnl Prerequisites of AC_LIB_LINKFLAGS_BODY.
14 | AC_REQUIRE([AC_LIB_PREPARE_PREFIX])
15 | AC_REQUIRE([AC_LIB_RPATH])
16 |
17 | dnl Search for libiconv and define LIBICONV, LTLIBICONV and INCICONV
18 | dnl accordingly.
19 | AC_LIB_LINKFLAGS_BODY([iconv])
20 | ])
21 |
22 | AC_DEFUN([AM_ICONV_LINK],
23 | [
24 | dnl Some systems have iconv in libc, some have it in libiconv (OSF/1 and
25 | dnl those with the standalone portable GNU libiconv installed).
26 |
27 | dnl Search for libiconv and define LIBICONV, LTLIBICONV and INCICONV
28 | dnl accordingly.
29 | AC_REQUIRE([AM_ICONV_LINKFLAGS_BODY])
30 |
31 | dnl Add $INCICONV to CPPFLAGS before performing the following checks,
32 | dnl because if the user has installed libiconv and not disabled its use
33 | dnl via --without-libiconv-prefix, he wants to use it. The first
34 | dnl AC_TRY_LINK will then fail, the second AC_TRY_LINK will succeed.
35 | am_save_CPPFLAGS="$CPPFLAGS"
36 | AC_LIB_APPENDTOVAR([CPPFLAGS], [$INCICONV])
37 |
38 | AC_CACHE_CHECK(for iconv, am_cv_func_iconv, [
39 | am_cv_func_iconv="no, consider installing GNU libiconv"
40 | am_cv_lib_iconv=no
41 | AC_TRY_LINK([#include
42 | #include ],
43 | [iconv_t cd = iconv_open("","");
44 | iconv(cd,NULL,NULL,NULL,NULL);
45 | iconv_close(cd);],
46 | am_cv_func_iconv=yes)
47 | if test "$am_cv_func_iconv" != yes; then
48 | am_save_LIBS="$LIBS"
49 | LIBS="$LIBS $LIBICONV"
50 | AC_TRY_LINK([#include
51 | #include ],
52 | [iconv_t cd = iconv_open("","");
53 | iconv(cd,NULL,NULL,NULL,NULL);
54 | iconv_close(cd);],
55 | am_cv_lib_iconv=yes
56 | am_cv_func_iconv=yes)
57 | LIBS="$am_save_LIBS"
58 | fi
59 | ])
60 | if test "$am_cv_func_iconv" = yes; then
61 | AC_DEFINE(HAVE_ICONV, 1, [Define if you have the iconv() function.])
62 | fi
63 | if test "$am_cv_lib_iconv" = yes; then
64 | AC_MSG_CHECKING([how to link with libiconv])
65 | AC_MSG_RESULT([$LIBICONV])
66 | else
67 | dnl If $LIBICONV didn't lead to a usable library, we don't need $INCICONV
68 | dnl either.
69 | CPPFLAGS="$am_save_CPPFLAGS"
70 | LIBICONV=
71 | LTLIBICONV=
72 | fi
73 | AC_SUBST(LIBICONV)
74 | AC_SUBST(LTLIBICONV)
75 | ])
76 |
77 | AC_DEFUN([AM_ICONV],
78 | [
79 | AM_ICONV_LINK
80 | if test "$am_cv_func_iconv" = yes; then
81 | AC_MSG_CHECKING([for iconv declaration])
82 | AC_CACHE_VAL(am_cv_proto_iconv, [
83 | AC_TRY_COMPILE([
84 | #include
85 | #include
86 | extern
87 | #ifdef __cplusplus
88 | "C"
89 | #endif
90 | #if defined(__STDC__) || defined(__cplusplus)
91 | size_t iconv (iconv_t cd, char * *inbuf, size_t *inbytesleft, char * *outbuf, size_t *outbytesleft);
92 | #else
93 | size_t iconv();
94 | #endif
95 | ], [], am_cv_proto_iconv_arg1="", am_cv_proto_iconv_arg1="const")
96 | am_cv_proto_iconv="extern size_t iconv (iconv_t cd, $am_cv_proto_iconv_arg1 char * *inbuf, size_t *inbytesleft, char * *outbuf, size_t *outbytesleft);"])
97 | am_cv_proto_iconv=`echo "[$]am_cv_proto_iconv" | tr -s ' ' | sed -e 's/( /(/'`
98 | AC_MSG_RESULT([$]{ac_t:-
99 | }[$]am_cv_proto_iconv)
100 | AC_DEFINE_UNQUOTED(ICONV_CONST, $am_cv_proto_iconv_arg1,
101 | [Define as const if the declaration of iconv() needs const.])
102 | fi
103 | ])
104 |
--------------------------------------------------------------------------------
/po/pl.po:
--------------------------------------------------------------------------------
1 | # Polish translations for gpgex package.
2 | # Copyright (C) 2007 g10 Code GmbH
3 | # This file is distributed under the same license as the gpgex package.
4 | # Marcus Brinkmann , 2007.
5 | #
6 | msgid ""
7 | msgstr ""
8 | "Project-Id-Version: gpgex 1.0.0\n"
9 | "Report-Msgid-Bugs-To: http://bugs.gnupg.org\n"
10 | "PO-Revision-Date: 2014-10-19 10:25+0100\n"
11 | "Last-Translator: Tomasz Krawczyk \n"
12 | "Language-Team: Polish\n"
13 | "Language: pl\n"
14 | "MIME-Version: 1.0\n"
15 | "Content-Type: text/plain; charset=UTF-8\n"
16 | "Content-Transfer-Encoding: 8bit\n"
17 | "Plural-Forms: nplurals=2; plural=(n != 1);\n"
18 | "X-Generator: Poedit 1.6.10\n"
19 |
20 | #, c-format
21 | msgid ""
22 | "Can not connect to the GnuPG user interface%s%s%s:\r\n"
23 | "%s"
24 | msgstr ""
25 | "Nie można połączyć się z interfejsem użytkownika GnuPG%s%s%s:\r\n"
26 | "%s"
27 |
28 | #, c-format
29 | msgid ""
30 | "Error returned by the GnuPG user interface%s%s%s:\r\n"
31 | "%s"
32 | msgstr ""
33 | "Błąd zwrócony przez interfejs użytkownika GnuPG%s%s%s:\\r\n"
34 | "%s"
35 |
36 | msgid "About GpgEX"
37 | msgstr "O GpgEX"
38 |
39 | msgid "Decrypt and verify"
40 | msgstr "Rozszyfruj i zweryfikuj"
41 |
42 | msgid "Decrypt"
43 | msgstr "Rozszyfruj"
44 |
45 | msgid "Verify"
46 | msgstr "Weryfikuj"
47 |
48 | msgid "Sign and encrypt"
49 | msgstr "Podpisz i zaszyfruj"
50 |
51 | msgid "Encrypt"
52 | msgstr "Zaszyfruj"
53 |
54 | msgid "Sign"
55 | msgstr "Podpisz"
56 |
57 | msgid "Import keys"
58 | msgstr "Importuj klucze"
59 |
60 | msgid "Create checksums"
61 | msgstr "Utwórz sumy kontrolne"
62 |
63 | msgid "Verify checksums"
64 | msgstr "Zweryfikuj sumy kontrolne"
65 |
66 | msgid "More GpgEX options"
67 | msgstr "Więcej opcji GpgEX"
68 |
69 | msgid "Show the version of GpgEX."
70 | msgstr "Pokaż wersję GpgEX."
71 |
72 | msgid "Decrypt and verify the marked files."
73 | msgstr "Rozszyfruj i zweryfikuj zaznaczone pliki."
74 |
75 | msgid "Decrypt the marked files."
76 | msgstr "Rozszyfruj zaznaczone pliki."
77 |
78 | msgid "Verify the marked files."
79 | msgstr "Zweryfikuj zaznaczone pliki."
80 |
81 | msgid "Sign and encrypt the marked files."
82 | msgstr "Podpisz i zaszyfruj zaznaczone pliki."
83 |
84 | msgid "Encrypt the marked files."
85 | msgstr "Zaszyfruj zaznaczone pliki."
86 |
87 | msgid "Sign the marked files."
88 | msgstr "Podpisz zaznaczone pliki."
89 |
90 | msgid "Import the marked files."
91 | msgstr "Importuj zaznaczone pliki."
92 |
93 | msgid "Create checksums."
94 | msgstr "Utwórz sumy kontrolne."
95 |
96 | msgid "Verify checksums."
97 | msgstr "Zweryfikuj sumy kontrolne."
98 |
99 | msgid "Show more GpgEX options."
100 | msgstr "Pokaż więcej opcji GpgEX."
101 |
102 | #. TRANSLATORS: See the source for the full english text.
103 | msgid "-#GpgEXFullHelpText#-"
104 | msgstr ""
105 | "GpgEX jest pluginem do Exploatora Windows do szyfrowania i podpisywania\n"
106 | "danych. Używa oprogramowania GnuPG (http://www.gnupg.org).\n"
107 | "\n"
108 | "GpgEX jest oprogramowaniem darmowym; możesz je redystrybuować i/lub\n"
109 | "modyfikować na warunkach GNU Lesser General Public License \n"
110 | "i publikowanej przez Free Software Foundation; zarówno\n"
111 | "wersji 2.1 jak i (twoja opcja) jakąkolwiek nowszą wersją.\n"
112 | "\n"
113 | "GpgEX jest dystrybuowany w nadziei, że będzie użyteczny, ale\n"
114 | "BEZ ŻADNEJ GWARANCJI; nawet bez pośredniej gwarancji\n"
115 | "RYNKOWOŚCI lub PRZYDATNOŚCI DLA SZCZEGÓLNEGO CELU.\n"
116 | "Więcej szczegółów w GNU Lesser General Pulbic License.\n"
117 | "\n"
118 | "Powinieneś otrzymać kopię GNU Lesser General Public License\n"
119 | "wraz z tym programem; jeśli nie, zobacz ."
120 |
121 | #, c-format
122 | msgid "This is GpgEX version %s (%s)"
123 | msgstr "To jest GpgEX wersja %s (%s)"
124 |
125 | #~ msgid "Help on GpgEX"
126 | #~ msgstr "Pomoc do GpgEX"
127 |
128 | #~ msgid "Invoke the GpgEX documentation."
129 | #~ msgstr "Otwórz dokumentację GpgEX."
130 |
--------------------------------------------------------------------------------
/po/pt.po:
--------------------------------------------------------------------------------
1 | # Translation of GPGex.
2 | # Copyright (C) 2017 g10 Code GmbH
3 | # This file is distributed under the same license as the FIXME:GPGex package.
4 | # Diego Escalante Urrelo , 2008.
5 | #
6 | #
7 | msgid ""
8 | msgstr ""
9 | "Project-Id-Version: GpgEX\n"
10 | "Report-Msgid-Bugs-To: http://bugs.gnupg.org\n"
11 | "PO-Revision-Date: 2017-10-16 13:38+0100\n"
12 | "Last-Translator: Marco A.G.Pinto \n"
13 | "Language-Team: Portuguese \n"
14 | "Language: pt\n"
15 | "MIME-Version: 1.0\n"
16 | "Content-Type: text/plain; charset=UTF-8\n"
17 | "Content-Transfer-Encoding: 8bit\n"
18 | "X-Poedit-SourceCharset: UTF-8\n"
19 | "X-Generator: Poedit 2.0.4\n"
20 |
21 | #, c-format
22 | msgid ""
23 | "Can not connect to the GnuPG user interface%s%s%s:\r\n"
24 | "%s"
25 | msgstr ""
26 | "Não é possível aceder à interface de utilizador do GnuPG%s%s%s:\r\n"
27 | "%s"
28 |
29 | #, c-format
30 | msgid ""
31 | "Error returned by the GnuPG user interface%s%s%s:\r\n"
32 | "%s"
33 | msgstr ""
34 | "Erro retornado pela interface de utilizador do GnuPG%s%s%s:\r\n"
35 | "%s"
36 |
37 | msgid "About GpgEX"
38 | msgstr "Sobre o GpgEX"
39 |
40 | msgid "Decrypt and verify"
41 | msgstr "Desencriptar e verificar"
42 |
43 | msgid "Decrypt"
44 | msgstr "Desencriptar"
45 |
46 | msgid "Verify"
47 | msgstr "Verificar"
48 |
49 | msgid "Sign and encrypt"
50 | msgstr "Assinar e encriptar"
51 |
52 | msgid "Encrypt"
53 | msgstr "Encriptar"
54 |
55 | msgid "Sign"
56 | msgstr "Assinar"
57 |
58 | msgid "Import keys"
59 | msgstr "Importar chaves"
60 |
61 | msgid "Create checksums"
62 | msgstr "Criar checksums"
63 |
64 | msgid "Verify checksums"
65 | msgstr "Verificar checksums"
66 |
67 | msgid "More GpgEX options"
68 | msgstr "Mais opções do GpgEX"
69 |
70 | msgid "Show the version of GpgEX."
71 | msgstr "Mostrar a versão do GpgEX."
72 |
73 | msgid "Decrypt and verify the marked files."
74 | msgstr "Desencriptar e verificar os ficheiros marcados."
75 |
76 | msgid "Decrypt the marked files."
77 | msgstr "Desencriptar os ficheiros marcados."
78 |
79 | msgid "Verify the marked files."
80 | msgstr "Verificar os ficheiros marcados."
81 |
82 | msgid "Sign and encrypt the marked files."
83 | msgstr "Assinar e encriptar os ficheiros marcados."
84 |
85 | msgid "Encrypt the marked files."
86 | msgstr "Encriptar os ficheiros marcados."
87 |
88 | msgid "Sign the marked files."
89 | msgstr "Assinar os ficheiros marcados."
90 |
91 | msgid "Import the marked files."
92 | msgstr "Importar os ficheiros marcados."
93 |
94 | msgid "Create checksums."
95 | msgstr "Criar checksums."
96 |
97 | msgid "Verify checksums."
98 | msgstr "Verificar checksums."
99 |
100 | msgid "Show more GpgEX options."
101 | msgstr "Mostrar mais opções do GpgEX."
102 |
103 | #. TRANSLATORS: See the source for the full english text.
104 | msgid "-#GpgEXFullHelpText#-"
105 | msgstr ""
106 | "O GpgEX é um plug-in Explorer para encriptar e assinar dados.\n"
107 | "Ele usa o software GnuPG (http://www.gnupg.org).\n"
108 | "\n"
109 | "O GpgEX é software livre; podes redistribuí-lo e/ou\n"
110 | "modificá-lo nos termos da GNU Lesser General Public\n"
111 | "License, como está publicado pela Free Software Foundation; quer\n"
112 | "a versão 2.1 da Licença, ou (à tua escolha) qualquer versão posterior.\n"
113 | "\n"
114 | "O GpgEX é distribuído na esperança que possa ser útil,\n"
115 | "mas SEM QUALQUER GARANTIA; nem mesmo a garantia implícita de\n"
116 | "MERCANTIBILIDADE ou APTIDÃO PARA UMA FINALIDADE ESPECÍFICA. Vê a\n"
117 | "GNU Lesser General Public License para mais detalhes.\n"
118 | "\n"
119 | "Deves ter recebido uma cópia da GNU Lesser General Public License\n"
120 | "juntamente com este programa; se não, vê ."
121 |
122 | #, c-format
123 | msgid "This is GpgEX version %s (%s)"
124 | msgstr "Este é o GpgEX versão %s (%s)"
125 |
126 | #~ msgid "Help on GpgEX"
127 | #~ msgstr "Ajuda do GpgEX"
128 |
129 | #~ msgid "Invoke the GpgEX documentation."
130 | #~ msgstr "Invocar a documentação do GpgEX."
131 |
--------------------------------------------------------------------------------
/m4/lib-ld.m4:
--------------------------------------------------------------------------------
1 | # lib-ld.m4 serial 2 (gettext-0.12)
2 | dnl Copyright (C) 1996-2003 Free Software Foundation, Inc.
3 | dnl This file is free software, distributed under the terms of the GNU
4 | dnl General Public License. As a special exception to the GNU General
5 | dnl Public License, this file may be distributed as part of a program
6 | dnl that contains a configuration script generated by Autoconf, under
7 | dnl the same distribution terms as the rest of that program.
8 |
9 | dnl Subroutines of libtool.m4,
10 | dnl with replacements s/AC_/AC_LIB/ and s/lt_cv/acl_cv/ to avoid collision
11 | dnl with libtool.m4.
12 |
13 | dnl From libtool-1.4. Sets the variable with_gnu_ld to yes or no.
14 | AC_DEFUN([AC_LIB_PROG_LD_GNU],
15 | [AC_CACHE_CHECK([if the linker ($LD) is GNU ld], acl_cv_prog_gnu_ld,
16 | [# I'd rather use --version here, but apparently some GNU ld's only accept -v.
17 | if $LD -v 2>&1 &5; then
18 | acl_cv_prog_gnu_ld=yes
19 | else
20 | acl_cv_prog_gnu_ld=no
21 | fi])
22 | with_gnu_ld=$acl_cv_prog_gnu_ld
23 | ])
24 |
25 | dnl From libtool-1.4. Sets the variable LD.
26 | AC_DEFUN([AC_LIB_PROG_LD],
27 | [AC_ARG_WITH(gnu-ld,
28 | [ --with-gnu-ld assume the C compiler uses GNU ld [default=no]],
29 | test "$withval" = no || with_gnu_ld=yes, with_gnu_ld=no)
30 | AC_REQUIRE([AC_PROG_CC])dnl
31 | AC_REQUIRE([AC_CANONICAL_HOST])dnl
32 | # Prepare PATH_SEPARATOR.
33 | # The user is always right.
34 | if test "${PATH_SEPARATOR+set}" != set; then
35 | echo "#! /bin/sh" >conf$$.sh
36 | echo "exit 0" >>conf$$.sh
37 | chmod +x conf$$.sh
38 | if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then
39 | PATH_SEPARATOR=';'
40 | else
41 | PATH_SEPARATOR=:
42 | fi
43 | rm -f conf$$.sh
44 | fi
45 | ac_prog=ld
46 | if test "$GCC" = yes; then
47 | # Check if gcc -print-prog-name=ld gives a path.
48 | AC_MSG_CHECKING([for ld used by GCC])
49 | case $host in
50 | *-*-mingw*)
51 | # gcc leaves a trailing carriage return which upsets mingw
52 | ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;;
53 | *)
54 | ac_prog=`($CC -print-prog-name=ld) 2>&5` ;;
55 | esac
56 | case $ac_prog in
57 | # Accept absolute paths.
58 | [[\\/]* | [A-Za-z]:[\\/]*)]
59 | [re_direlt='/[^/][^/]*/\.\./']
60 | # Canonicalize the path of ld
61 | ac_prog=`echo $ac_prog| sed 's%\\\\%/%g'`
62 | while echo $ac_prog | grep "$re_direlt" > /dev/null 2>&1; do
63 | ac_prog=`echo $ac_prog| sed "s%$re_direlt%/%"`
64 | done
65 | test -z "$LD" && LD="$ac_prog"
66 | ;;
67 | "")
68 | # If it fails, then pretend we aren't using GCC.
69 | ac_prog=ld
70 | ;;
71 | *)
72 | # If it is relative, then search for the first ld in PATH.
73 | with_gnu_ld=unknown
74 | ;;
75 | esac
76 | elif test "$with_gnu_ld" = yes; then
77 | AC_MSG_CHECKING([for GNU ld])
78 | else
79 | AC_MSG_CHECKING([for non-GNU ld])
80 | fi
81 | AC_CACHE_VAL(acl_cv_path_LD,
82 | [if test -z "$LD"; then
83 | IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}${PATH_SEPARATOR-:}"
84 | for ac_dir in $PATH; do
85 | test -z "$ac_dir" && ac_dir=.
86 | if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then
87 | acl_cv_path_LD="$ac_dir/$ac_prog"
88 | # Check to see if the program is GNU ld. I'd rather use --version,
89 | # but apparently some GNU ld's only accept -v.
90 | # Break only if it was the GNU/non-GNU ld that we prefer.
91 | if "$acl_cv_path_LD" -v 2>&1 < /dev/null | egrep '(GNU|with BFD)' > /dev/null; then
92 | test "$with_gnu_ld" != no && break
93 | else
94 | test "$with_gnu_ld" != yes && break
95 | fi
96 | fi
97 | done
98 | IFS="$ac_save_ifs"
99 | else
100 | acl_cv_path_LD="$LD" # Let the user override the test with a path.
101 | fi])
102 | LD="$acl_cv_path_LD"
103 | if test -n "$LD"; then
104 | AC_MSG_RESULT($LD)
105 | else
106 | AC_MSG_RESULT(no)
107 | fi
108 | test -z "$LD" && AC_MSG_ERROR([no acceptable ld found in \$PATH])
109 | AC_LIB_PROG_LD_GNU
110 | ])
111 |
--------------------------------------------------------------------------------
/po/sv.po:
--------------------------------------------------------------------------------
1 | # Swedish translations for gpgex package.
2 | # Copyright (C) 2007 g10 Code GmbH
3 | # This file is distributed under the same license as the gpgex package.
4 | #
5 | # Daniel Nylander , 2025.
6 | msgid ""
7 | msgstr ""
8 | "Project-Id-Version: gpgex 1.0.0\n"
9 | "Report-Msgid-Bugs-To: http://bugs.gnupg.org\n"
10 | "PO-Revision-Date: 2025-11-15 16:12+0100\n"
11 | "Last-Translator: Daniel Nylander \n"
12 | "Language-Team: sv\n"
13 | "Language: sv\n"
14 | "MIME-Version: 1.0\n"
15 | "Content-Type: text/plain; charset=UTF-8\n"
16 | "Content-Transfer-Encoding: 8bit\n"
17 | "Plural-Forms: nplurals=2; plural=(n != 1);\n"
18 | "X-Generator: Poedit 3.8\n"
19 |
20 | #, c-format
21 | msgid ""
22 | "Can not connect to the GnuPG user interface%s%s%s:\r\n"
23 | "%s"
24 | msgstr ""
25 | "Kan inte ansluta till GnuPG-användargränssnittet%s%s%s:\n"
26 | "%s"
27 |
28 | #, c-format
29 | msgid ""
30 | "Error returned by the GnuPG user interface%s%s%s:\r\n"
31 | "%s"
32 | msgstr ""
33 | "Fel som returneras av GnuPG-användargränssnittet%s%s%s:\n"
34 | "%s"
35 |
36 | msgid "About GpgEX"
37 | msgstr "Om GpgEX"
38 |
39 | msgid "Decrypt and verify"
40 | msgstr "Avkryptera och verifiera"
41 |
42 | msgid "Decrypt"
43 | msgstr "Avkryptera"
44 |
45 | msgid "Verify"
46 | msgstr "Verifiera"
47 |
48 | msgid "Sign and encrypt"
49 | msgstr "Signera och kryptera"
50 |
51 | msgid "Encrypt"
52 | msgstr "Kryptera"
53 |
54 | msgid "Sign"
55 | msgstr "Signera"
56 |
57 | msgid "Import keys"
58 | msgstr "Importera nycklar"
59 |
60 | msgid "Create checksums"
61 | msgstr "Skapa kontrollsummor"
62 |
63 | msgid "Verify checksums"
64 | msgstr "Verifiera kontrollsummor"
65 |
66 | msgid "More GpgEX options"
67 | msgstr "Fler GpgEX-alternativ"
68 |
69 | msgid "Show the version of GpgEX."
70 | msgstr "Visa versionen av GpgEX."
71 |
72 | msgid "Decrypt and verify the marked files."
73 | msgstr "Avkryptera och verifiera de markerade filerna."
74 |
75 | msgid "Decrypt the marked files."
76 | msgstr "Avkryptera de markerade filerna."
77 |
78 | msgid "Verify the marked files."
79 | msgstr "Verifiera de markerade filerna."
80 |
81 | msgid "Sign and encrypt the marked files."
82 | msgstr "Signera och kryptera de markerade filerna."
83 |
84 | msgid "Encrypt the marked files."
85 | msgstr "Kryptera de markerade filerna."
86 |
87 | msgid "Sign the marked files."
88 | msgstr "Signera de markerade filerna."
89 |
90 | msgid "Import the marked files."
91 | msgstr "Importera de markerade filerna."
92 |
93 | msgid "Create checksums."
94 | msgstr "Skapa kontrollsummor."
95 |
96 | msgid "Verify checksums."
97 | msgstr "Verifiera kontrollsummor."
98 |
99 | msgid "Show more GpgEX options."
100 | msgstr "Visa fler GpgEX-alternativ."
101 |
102 | #. TRANSLATORS: See the source for the full english text.
103 | msgid "-#GpgEXFullHelpText#-"
104 | msgstr ""
105 | "GpgEX är ett tillägg till Utforskaren som gör det möjligt att\n"
106 | "kryptera och digitalt signera data med hjälp av internetstandarderna\n"
107 | "PGP/MIME eller S/MIME. I bakgrunden används\n"
108 | "programvaran GnuPG ().\n"
109 | "\n"
110 | "GpgEX är fri programvara. Du kan distribuera och/eller modifiera den enligt "
111 | "villkoren\n"
112 | "i GNU Lesser General Public License, som publicerats av Free Software\n"
113 | "Foundation, antingen enligt version 2.1 av licensen eller (efter eget val)\n"
114 | "varje senare version.\n"
115 | "\n"
116 | "GpgEX publiceras i hopp om att den ska vara till nytta för dig,\n"
117 | "men utan någon garanti, inte ens den underförstådda\n"
118 | "garanti för marknadsmognad eller användbarhet för ett visst\n"
119 | "ändamål. Mer information finns i GNU Lesser General Public License.\n"
120 | "\n"
121 | "Tillsammans med GpgEX bör du ha fått en kopia av GNU Lesser General\n"
122 | "Public License. Om inte, hittar du den\n"
123 | "på webbadressen ."
124 |
125 | #, c-format
126 | msgid "This is GpgEX version %s (%s)"
127 | msgstr "Detta är GpgEX version %s (%s)"
128 |
129 | #~ msgid "Help on GpgEX"
130 | #~ msgstr "Hilfe zu GpgEX"
131 |
132 | #~ msgid "Invoke the GpgEX documentation."
133 | #~ msgstr "Öffne die Dokumentation zu GpgEX"
134 |
--------------------------------------------------------------------------------
/po/nl.po:
--------------------------------------------------------------------------------
1 | # Dutch translations for gpgex package.
2 | # Copyright (C) 2018 g10 Code GmbH
3 | # This file is distributed under the same license as the gpgex package.
4 | # Erwin Bronkhorst , 2018.
5 | #
6 | msgid ""
7 | msgstr ""
8 | "Project-Id-Version: GpgEX 1.0.3\n"
9 | "Report-Msgid-Bugs-To: http://bugs.gnupg.org\n"
10 | "PO-Revision-Date: 2018-05-23 14:31+0200\n"
11 | "Last-Translator: Erwin Bronkhorst \n"
12 | "Language-Team: \n"
13 | "Language: nl\n"
14 | "MIME-Version: 1.0\n"
15 | "Content-Type: text/plain; charset=UTF-8\n"
16 | "Content-Transfer-Encoding: 8bit\n"
17 | "X-Generator: Poedit 1.8.11\n"
18 | "Plural-Forms: nplurals=2; plural=(n != 1);\n"
19 |
20 | #, c-format
21 | msgid ""
22 | "Can not connect to the GnuPG user interface%s%s%s:\r\n"
23 | "%s"
24 | msgstr ""
25 | "Kan niet met de GnuPG gebuikersinterface verbinden%s%s%s:\r\n"
26 | "%s"
27 |
28 | #, c-format
29 | msgid ""
30 | "Error returned by the GnuPG user interface%s%s%s:\r\n"
31 | "%s"
32 | msgstr ""
33 | "Fout gerapporteerd door de GnuPG gebruikersinterface%s%s%s:\r\n"
34 | "%s"
35 |
36 | msgid "About GpgEX"
37 | msgstr "Over GpgEX"
38 |
39 | msgid "Decrypt and verify"
40 | msgstr "Ontcijferen en verifiëren"
41 |
42 | msgid "Decrypt"
43 | msgstr "Ontcijferen"
44 |
45 | msgid "Verify"
46 | msgstr "Verifiëren"
47 |
48 | msgid "Sign and encrypt"
49 | msgstr "Ondertekenen en versleutelen"
50 |
51 | msgid "Encrypt"
52 | msgstr "Versleutelen"
53 |
54 | msgid "Sign"
55 | msgstr "Ondertekenen"
56 |
57 | msgid "Import keys"
58 | msgstr "Sleutels importeren"
59 |
60 | msgid "Create checksums"
61 | msgstr "Controlesommen maken"
62 |
63 | msgid "Verify checksums"
64 | msgstr "Controlesommen verifiëren"
65 |
66 | msgid "More GpgEX options"
67 | msgstr "Meer opties voor GpgEX"
68 |
69 | msgid "Show the version of GpgEX."
70 | msgstr "De versie van GpgEX weergeven."
71 |
72 | msgid "Decrypt and verify the marked files."
73 | msgstr "De gemarkeerde bestanden ontcijferen en verifiëren."
74 |
75 | msgid "Decrypt the marked files."
76 | msgstr "De gemarkeerde bestanden ontcijferen."
77 |
78 | msgid "Verify the marked files."
79 | msgstr "De gemarkeerde bestanden verifiëren."
80 |
81 | msgid "Sign and encrypt the marked files."
82 | msgstr "De gemarkeerde bestanden ondertekenen en versleutelen."
83 |
84 | msgid "Encrypt the marked files."
85 | msgstr "De geselecteerde bestanden versleutelen."
86 |
87 | msgid "Sign the marked files."
88 | msgstr "De gemarkeerde bestanden ondertekenen."
89 |
90 | msgid "Import the marked files."
91 | msgstr "De gemarkeerde bestanden importeren."
92 |
93 | msgid "Create checksums."
94 | msgstr "Controlesommen maken."
95 |
96 | msgid "Verify checksums."
97 | msgstr "Controlesommen verifiëren."
98 |
99 | msgid "Show more GpgEX options."
100 | msgstr "Meer opties voor GpgEX weergeven."
101 |
102 | #. TRANSLATORS: See the source for the full english text.
103 | msgid "-#GpgEXFullHelpText#-"
104 | msgstr ""
105 | "GpgEX is een invoegtoepassing voor Verkenner voor het versleutelen en "
106 | "ondertekenen van gegevens.\n"
107 | "Het gebruikt de GnuPG-software (http://www.gnupg.org).\n"
108 | "\n"
109 | "GpgEX is vrije software; u kunt het verspreiden en/of aanpassen\n"
110 | "onder de voorwaarden van de GNU Lesser General Public License\n"
111 | "zoals gepubliceerd bij de Free Software Foundation; zowel versie\n"
112 | "2.1 van de licentie, of (naar eigen keuze) elke nieuwere versie.\n"
113 | "\n"
114 | "GpgEX wordt verspreid in de hoop dat het bruikbaar zal zijn,\n"
115 | "maar ZONDER ENIGE GARANTIE; zonder ook maar de impliciete garantie\n"
116 | "van VERKOOPBAARHEID of TOEPASSING VOOR EEN BEPAALD DOEL. Zie de\n"
117 | "GNU Lesser General Public LIcense voor meer details.\n"
118 | "\n"
119 | "U zou een kopie van de GNU Lesser General Public License\n"
120 | "ontvangen moeten hebben bij dit programma; zo niet,\n"
121 | "zie ."
122 |
123 | #, c-format
124 | msgid "This is GpgEX version %s (%s)"
125 | msgstr "Dit is GpgEX versie %s (%s)"
126 |
127 | #~ msgid "Help on GpgEX"
128 | #~ msgstr "Help voor GpgEX"
129 |
130 | #~ msgid "Invoke the GpgEX documentation."
131 | #~ msgstr "De documentatie voor GpgEX raadplegen."
132 |
--------------------------------------------------------------------------------
/po/it.po:
--------------------------------------------------------------------------------
1 | # Italian translations for gpgex package.
2 | # Copyright (C) 2024 Deniz Renzi
3 | # This file is distributed under the same license as the gpgex package.
4 | #
5 | msgid ""
6 | msgstr ""
7 | "Project-Id-Version: gpgex 1.0.0\n"
8 | "Report-Msgid-Bugs-To: http://bugs.gnupg.org\n"
9 | "PO-Revision-Date: 2024-02-10 20:08+0100\n"
10 | "Last-Translator: Denis Renzi \n"
11 | "Language-Team: \n"
12 | "Language: it_IT\n"
13 | "MIME-Version: 1.0\n"
14 | "Content-Type: text/plain; charset=UTF-8\n"
15 | "Content-Transfer-Encoding: 8bit\n"
16 | "Plural-Forms: nplurals=2; plural=(n != 1);\n"
17 | "X-Generator: Poedit 2.4.3\n"
18 |
19 | #, c-format
20 | msgid ""
21 | "Can not connect to the GnuPG user interface%s%s%s:\r\n"
22 | "%s"
23 | msgstr ""
24 | "Non è possibile connettersi all'interfaccia utente GnuPG%s%s%s:\n"
25 | "%s"
26 |
27 | #, c-format
28 | msgid ""
29 | "Error returned by the GnuPG user interface%s%s%s:\r\n"
30 | "%s"
31 | msgstr ""
32 | "Errore restituito dall'interfaccia utente GnuPG%s%s%s:\r\n"
33 | "%s"
34 |
35 | msgid "About GpgEX"
36 | msgstr "Informazioni su GpgEX"
37 |
38 | msgid "Decrypt and verify"
39 | msgstr "Decrittografare e verificare"
40 |
41 | msgid "Decrypt"
42 | msgstr "Decrittografare"
43 |
44 | msgid "Verify"
45 | msgstr "Verifica"
46 |
47 | msgid "Sign and encrypt"
48 | msgstr "Firmare e crittografare"
49 |
50 | msgid "Encrypt"
51 | msgstr "Cifra"
52 |
53 | msgid "Sign"
54 | msgstr "Firma"
55 |
56 | msgid "Import keys"
57 | msgstr "Importare chiavi"
58 |
59 | msgid "Create checksums"
60 | msgstr "Creare checksum"
61 |
62 | msgid "Verify checksums"
63 | msgstr "Verificare i checksum"
64 |
65 | msgid "More GpgEX options"
66 | msgstr "Altre opzioni GpgEX"
67 |
68 | msgid "Show the version of GpgEX."
69 | msgstr "Mostra la versione di GpgEX."
70 |
71 | msgid "Decrypt and verify the marked files."
72 | msgstr "Decrittografare e verificare i file contrassegnati."
73 |
74 | msgid "Decrypt the marked files."
75 | msgstr "Decrittografare i file contrassegnati."
76 |
77 | msgid "Verify the marked files."
78 | msgstr "Verificare i file contrassegnati."
79 |
80 | msgid "Sign and encrypt the marked files."
81 | msgstr "Firmare e crittografare i file contrassegnati."
82 |
83 | msgid "Encrypt the marked files."
84 | msgstr "Crittografare i file contrassegnati."
85 |
86 | msgid "Sign the marked files."
87 | msgstr "Firmare i file contrassegnati."
88 |
89 | msgid "Import the marked files."
90 | msgstr "Importare i file contrassegnati."
91 |
92 | msgid "Create checksums."
93 | msgstr "Creare checksum."
94 |
95 | msgid "Verify checksums."
96 | msgstr "Verificare i checksum."
97 |
98 | msgid "Show more GpgEX options."
99 | msgstr "Mostra altre opzioni GpgEX."
100 |
101 | #. TRANSLATORS: See the source for the full english text.
102 | msgid "-#GpgEXFullHelpText#-"
103 | msgstr ""
104 | "GpgEX è un'estensione di Explorer che lo rende possibile\n"
105 | "Dati che utilizzano gli standard Internet PGP/MIME o S/MIME\n"
106 | "crittografare e firmare digitalmente. Sullo sfondo c'è\n"
107 | "A questo scopo viene utilizzato il software GnuPG ().\n"
109 | "\n"
110 | "GpgEX è un software gratuito. Puoi farlo alle condizioni\n"
111 | "la GNU Lesser General Public License, come Software Libero\n"
112 | "La Fondazione pubblica, ridistribuisce e/o modifica;\n"
113 | "o secondo la versione 2.1 della licenza o (a tua scelta)\n"
114 | "qualsiasi versione successiva.\n"
115 | "GpgEX viene rilasciato nella speranza che possa esserti utile\n"
116 | "sarà, ma senza alcuna garanzia, anche senza quella implicita\n"
117 | "Garanzia della maturità del mercato o dell'usabilità per uno specifico\n"
118 | "scopo. Vedere GNU Lesser per i dettagli General Public License.\n"
119 | "\n"
120 | "Insieme a GpgEX dovresti ottenere una copia del GNU Lesser General\n"
121 | "Licenza pubblica. In caso contrario, trovalo\n"
122 | "all'indirizzo web "
123 |
124 | #, c-format
125 | msgid "This is GpgEX version %s (%s)"
126 | msgstr "Questa è la versione GpgEX %s (%s)"
127 |
128 | #~ msgid "Help on GpgEX"
129 | #~ msgstr "Guida su GpgEX"
130 |
131 | #~ msgid "Invoke the GpgEX documentation."
132 | #~ msgstr "Richiamare la documentazione GpgEX."
133 |
--------------------------------------------------------------------------------
/src/gpgex-factory.cc:
--------------------------------------------------------------------------------
1 | /* gpgex-factory.c - gpgex factory implementation
2 | Copyright (C) 2007 g10 Code GmbH
3 |
4 | This file is part of GpgEX.
5 |
6 | GpgEX is free software; you can redistribute it and/or
7 | modify it under the terms of the GNU Lesser General Public
8 | License as published by the Free Software Foundation; either
9 | version 2 of the License, or (at your option) any later version.
10 |
11 | GpgEX is distributed in the hope that it will be useful,
12 | but WITHOUT ANY WARRANTY; without even the implied warranty of
13 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 | GNU Lesser General Public License for more details.
15 |
16 | You should have received a copy of the GNU Lesser General Public
17 | License along with this program; if not, write to the Free Software
18 | Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
19 | 02110-1301, USA. */
20 |
21 | #if HAVE_CONFIG_H
22 | #include
23 | #endif
24 |
25 | #include
26 |
27 | #include "main.h"
28 | #include "gpgex.h"
29 |
30 | #include "gpgex-factory.h"
31 |
32 |
33 | /* IUnknown methods implementation. */
34 |
35 | STDMETHODIMP
36 | gpgex_factory_t::QueryInterface (REFIID riid, void **ppv)
37 | {
38 | #define _TRACE_BEG12(a,b,c,d,e,f) TRACE_BEG12 (a,b,c,d,e,f)
39 | _TRACE_BEG12 (DEBUG_INIT, "gpgex_factory_t::QueryInterface", this,
40 | "riid=" GUID_FMT ", ppv=%p", GUID_ARG (riid), ppv);
41 |
42 | if (ppv == NULL)
43 | return TRACE_RES (E_INVALIDARG);
44 |
45 | /* Be nice to broken software. */
46 | *ppv = NULL;
47 |
48 | /* The static casts ensure that the virtual function table
49 | layout of the returned object is correct. */
50 | if (riid == IID_IUnknown)
51 | *ppv = static_cast (this);
52 | else if (riid == IID_IClassFactory)
53 | *ppv = static_cast (this);
54 | else
55 | return TRACE_RES (E_NOINTERFACE);
56 |
57 | /* We have to acquire a reference to the returned object. We lost
58 | the type information, but we know that all object classes inherit
59 | from IUnknown, which is good enough. */
60 | reinterpret_cast(*ppv)->AddRef ();
61 |
62 | return TRACE_RES (S_OK);
63 | }
64 |
65 |
66 | STDMETHODIMP_(ULONG)
67 | gpgex_factory_t::AddRef (void)
68 | {
69 | (void) TRACE (DEBUG_INIT, "gpgex_factory_t::AddRef", this);
70 |
71 | /* This factory is a singleton and therefore no reference counting
72 | is needed. */
73 | return 1;
74 | }
75 |
76 |
77 | STDMETHODIMP_(ULONG)
78 | gpgex_factory_t::Release (void)
79 | {
80 | (void) TRACE (DEBUG_INIT, "gpgex_factory_t::Release", this);
81 |
82 | /* This factory is a singleton and therefore no reference counting
83 | is needed. */
84 | return 1;
85 | }
86 |
87 |
88 | /* IClassFactory methods implementation. */
89 |
90 | STDMETHODIMP
91 | gpgex_factory_t::CreateInstance (LPUNKNOWN punkOuter, REFIID riid,
92 | void **ppv)
93 | {
94 | HRESULT result;
95 |
96 | #define _TRACE_BEG13(a,b,c,d,e,f,g) TRACE_BEG13 (a,b,c,d,e,f,g)
97 | _TRACE_BEG13 (DEBUG_INIT, "gpgex_factory_t::CreateInstance", this,
98 | "punkOuter=%lu, riid=" GUID_FMT ", ppv=%p",
99 | punkOuter, GUID_ARG (riid), ppv);
100 |
101 | /* Be nice to broken software. */
102 | *ppv = NULL;
103 |
104 | /* Aggregation is not supported. */
105 | if (punkOuter)
106 | return TRACE_RES (CLASS_E_NOAGGREGATION);
107 |
108 | gpgex_t *gpgex = new gpgex_t;
109 | if (!gpgex)
110 | return TRACE_RES (E_OUTOFMEMORY);
111 |
112 | result = gpgex->QueryInterface (riid, ppv);
113 | if (FAILED (result))
114 | delete gpgex;
115 |
116 | return TRACE_RES (result);
117 | }
118 |
119 |
120 | STDMETHODIMP
121 | gpgex_factory_t::LockServer (BOOL fLock)
122 | {
123 | (void) TRACE1 (DEBUG_INIT, "gpgex_factory_t::LockServer", this,
124 | "fLock=%s", fLock ? "true" : "false");
125 |
126 | /* Locking the singleton gpgex factory object acquires a reference
127 | for the server component. */
128 | if (fLock)
129 | gpgex_server::add_ref ();
130 | else
131 | gpgex_server::release ();
132 |
133 | return S_OK;
134 | }
135 |
136 |
137 |
138 | /* The global singleton instance of the GpgEX factory. */
139 | gpgex_factory_t gpgex_factory;
140 |
--------------------------------------------------------------------------------
/NEWS:
--------------------------------------------------------------------------------
1 | Noteworthy changes for version 1.1.1 (unreleased)
2 | -------------------------------------------------
3 |
4 |
5 | Noteworthy changes for version 1.1.0 (2025-12-16)
6 | -------------------------------------------------
7 |
8 | * Get rid of the Registry entries for finding gpgconf and the
9 | UI-Server.
10 |
11 |
12 | Noteworthy changes for version 1.0.11 (2024-07-03)
13 | -------------------------------------------------
14 |
15 | * Build system updates
16 |
17 |
18 | Noteworthy changes for version 1.0.10 (2023-12-01)
19 | -------------------------------------------------
20 |
21 | * Removed outdated help entry.
22 |
23 | * General build system maintenance.
24 |
25 |
26 | Noteworthy changes for version 1.0.9 (2022-04-21)
27 | -------------------------------------------------
28 |
29 | * Added possibility for registry configuration.
30 |
31 |
32 | Noteworthy changes for version 1.0.8 (2021-09-22)
33 | -------------------------------------------------
34 |
35 | * Take the UI-Server socket directory from information provided by
36 | gpgconf. This matches the changes to the used socket directory
37 | introduced with GnuPG 2.2.30.
38 |
39 |
40 | Noteworthy changes for version 1.0.7 (2021-01-26)
41 | -------------------------------------------------
42 |
43 | * Added dutch translation.
44 |
45 | * Moved icon to most important menu item.
46 |
47 |
48 | Noteworthy changes for version 1.0.6 (2018-04-11)
49 | -------------------------------------------------
50 |
51 | * Updated portugese translation.
52 |
53 | * Nicer PNG based Icon.
54 |
55 |
56 | Noteworthy changes for version 1.0.5 (2017-09-12)
57 | -------------------------------------------------
58 |
59 | * Fixed localisation for the 64bit version.
60 |
61 | * Added c++ hardending flags by default.
62 |
63 |
64 | Noteworthy changes for version 1.0.4 (2016-03-30)
65 | -------------------------------------------------
66 |
67 | * Updated Portuguese translation.
68 |
69 | * Improved UI Server startup.
70 |
71 |
72 | Noteworthy changes for version 1.0.3 (2015-11-23)
73 | -------------------------------------------------
74 |
75 | * Added Chinese translation.
76 |
77 | * Added French translation.
78 |
79 |
80 | Noteworthy changes for version 1.0.2 (2014-11-05)
81 | -------------------------------------------------
82 |
83 | * Added Polish translation.
84 |
85 | * Add configure option --enable-gpa-only
86 |
87 |
88 | Noteworthy changes for version 1.0.1 (2014-07-30)
89 | -------------------------------------------------
90 |
91 | * Fixed segv in case GNUPGHOME is set.
92 |
93 | * Fixed possible double starting of the UI-server.
94 |
95 |
96 | Noteworthy changes for version 1.0.0 (2013-07-30)
97 | -------------------------------------------------
98 |
99 | * Support 64 bit Windows.
100 |
101 | * Improved help file detection.
102 |
103 | * Updated Arabian, German, Portuguese, Russian, and Spanish translations.
104 |
105 |
106 | Noteworthy changes for version 0.9.7 (2010-07-21)
107 | -------------------------------------------------
108 |
109 | * Fix building with latest libgpg-error.
110 |
111 | * Add Portuguese translation.
112 |
113 |
114 | Noteworthy changes for version 0.9.6 (2010-04-21)
115 | -------------------------------------------------
116 |
117 | * Update to libassuan 2.0.0.
118 |
119 | * Improve German translation.
120 |
121 | * Fix default menu item.
122 |
123 |
124 | Noteworthy changes for version 0.9.5 (2010-01-08)
125 | -------------------------------------------------
126 |
127 | * Fixed icon.
128 |
129 |
130 | Noteworthy changes for version 0.9.4 (2009-12-26)
131 | -------------------------------------------------
132 |
133 | * New icon.
134 |
135 |
136 | Noteworthy changes for version 0.9.3 (2009-03-24)
137 | -------------------------------------------------
138 |
139 | * Fixed build problems with newer WINDRES.
140 |
141 |
142 | Noteworthy changes for version 0.9.2 (2009-01-28)
143 | -------------------------------------------------
144 |
145 | * Translation changes.
146 |
147 |
148 | Noteworthy changes for version 0.9.1 (2008-09-09)
149 | -------------------------------------------------
150 |
151 | * Take care of CMS file suffixes.
152 |
153 |
154 | Noteworthy changes for version 0.9.0 (2008-03-26)
155 | -------------------------------------------------
156 |
157 | * Initial release.
158 |
--------------------------------------------------------------------------------
/po/de.po:
--------------------------------------------------------------------------------
1 | # German translations for gpgex package.
2 | # Copyright (C) 2007 g10 Code GmbH
3 | # This file is distributed under the same license as the gpgex package.
4 | #
5 | # Marcus Brinkmann , 2007.
6 | # Eva Bolten , 2023.
7 | msgid ""
8 | msgstr ""
9 | "Project-Id-Version: gpgex 1.0.0\n"
10 | "Report-Msgid-Bugs-To: http://bugs.gnupg.org\n"
11 | "PO-Revision-Date: 2023-07-13 13:52+0200\n"
12 | "Last-Translator: Eva Bolten \n"
13 | "Language-Team: German \n"
14 | "Language: de\n"
15 | "MIME-Version: 1.0\n"
16 | "Content-Type: text/plain; charset=UTF-8\n"
17 | "Content-Transfer-Encoding: 8bit\n"
18 | "Plural-Forms: nplurals=2; plural=(n != 1);\n"
19 | "X-Generator: Lokalize 20.12.0\n"
20 |
21 | #, c-format
22 | msgid ""
23 | "Can not connect to the GnuPG user interface%s%s%s:\r\n"
24 | "%s"
25 | msgstr ""
26 | "Verbindung zur GnuPG Benutzerschnittstelle%s%s%s kann nicht aufgebaut werden:"
27 | "\r\n"
28 | "%s"
29 |
30 | #, c-format
31 | msgid ""
32 | "Error returned by the GnuPG user interface%s%s%s:\r\n"
33 | "%s"
34 | msgstr ""
35 | "Fehlermeldung der GnuPG Benutzerschnittstelle%s%s%s:\r\n"
36 | "%s"
37 |
38 | msgid "About GpgEX"
39 | msgstr "Über GpgEX"
40 |
41 | msgid "Decrypt and verify"
42 | msgstr "Entschlüsseln und prüfen"
43 |
44 | msgid "Decrypt"
45 | msgstr "Entschlüsseln"
46 |
47 | msgid "Verify"
48 | msgstr "Prüfen"
49 |
50 | msgid "Sign and encrypt"
51 | msgstr "Signieren und verschlüsseln"
52 |
53 | msgid "Encrypt"
54 | msgstr "Verschlüsseln"
55 |
56 | msgid "Sign"
57 | msgstr "Signieren"
58 |
59 | msgid "Import keys"
60 | msgstr "Zertifikate importieren"
61 |
62 | msgid "Create checksums"
63 | msgstr "Prüfsummen erstellen"
64 |
65 | msgid "Verify checksums"
66 | msgstr "Prüfsummen überprüfen"
67 |
68 | msgid "More GpgEX options"
69 | msgstr "Mehr GpgEX Optionen"
70 |
71 | msgid "Show the version of GpgEX."
72 | msgstr "Anzeige der Version von GpgEX"
73 |
74 | msgid "Decrypt and verify the marked files."
75 | msgstr "Die markierten Dateien entschlüsseln und prüfen."
76 |
77 | msgid "Decrypt the marked files."
78 | msgstr "Die markierten Dateien entschlüsseln."
79 |
80 | msgid "Verify the marked files."
81 | msgstr "Die markierten Dateien prüfen."
82 |
83 | msgid "Sign and encrypt the marked files."
84 | msgstr "Die markierten Dateien signieren und verschlüsseln."
85 |
86 | msgid "Encrypt the marked files."
87 | msgstr "Die markierten Dateien verschlüsseln."
88 |
89 | msgid "Sign the marked files."
90 | msgstr "Die markierten Dateien signieren."
91 |
92 | msgid "Import the marked files."
93 | msgstr "Die markierten Dateien importieren."
94 |
95 | msgid "Create checksums."
96 | msgstr "Für die markierten Dateien Prüfsummen erstellen."
97 |
98 | msgid "Verify checksums."
99 | msgstr "Die Prüfsummen der markierten Dateien überprüfen."
100 |
101 | msgid "Show more GpgEX options."
102 | msgstr "Mehr GpgEX Optionen."
103 |
104 | #. TRANSLATORS: See the source for the full english text.
105 | msgid "-#GpgEXFullHelpText#-"
106 | msgstr ""
107 | "GpgEX ist eine Explorer Erweiterung, welche es ermöglicht\n"
108 | "Daten mittels der Internet-Standards PGP/MIME oder S/MIME\n"
109 | "zu verschlüsseln und digital zu signieren. Im Hintergrund wird\n"
110 | "dazu die GnuPG Software () benutzt.\n"
111 | "\n"
112 | "GpgEX ist freie Software. Sie können es unter den Bedingungen\n"
113 | "der GNU Lesser General Public License, wie von der Free Software\n"
114 | "Foundation veröffentlicht, weitergeben und/oder modifizieren;\n"
115 | "entweder gemäß Version 2.1 der Lizenz oder (nach Ihrer Wahl)\n"
116 | "jeder späteren Version.\n"
117 | "\n"
118 | "GpgEX wird in der Hoffnung veröffentlicht, daß es Ihnen von Nutzen\n"
119 | "sein wird, aber ohne irgendeine Garantie, sogar ohne die implizite\n"
120 | "Garantie der Marktreife oder der Verwendbarkeit für einen bestimmten\n"
121 | "Zweck. Details finden Sie in der GNU Lesser General Public License.\n"
122 | "\n"
123 | "Zusammen mit GpgEX sollten Sie eine Kopie der GNU Lesser General\n"
124 | "Public License erhalten haben. Falls nicht, finden Sie diese\n"
125 | "unter der Webadresse ."
126 |
127 | #, c-format
128 | msgid "This is GpgEX version %s (%s)"
129 | msgstr "Dies ist GpgEX Version %s (%s)"
130 |
131 | #~ msgid "Help on GpgEX"
132 | #~ msgstr "Hilfe zu GpgEX"
133 |
134 | #~ msgid "Invoke the GpgEX documentation."
135 | #~ msgstr "Öffne die Dokumentation zu GpgEX"
136 |
--------------------------------------------------------------------------------
/ChangeLog:
--------------------------------------------------------------------------------
1 | 2010-07-21 Werner Koch
2 |
3 | Release 0.9.7.
4 |
5 | 2010-07-21 Marco A.G.Pinto (wk)
6 |
7 | * po/pt.po: New.
8 | * po/LINGUAS: Add pt.
9 |
10 | 2010-07-21 Werner Koch
11 |
12 | * configure.ac: Require libgpg-error 1.9.
13 |
14 | 2010-04-21 Marcus Brinkmann
15 |
16 | Release 0.9.6.
17 |
18 | 2010-04-20 Marcus Brinkmann
19 |
20 | * configure.ac: Bump version to 0.9.6.
21 | (NEED_LIBASSUAN_API): Bump to 2.
22 | (NEED_LIBASSAUN_VERSION): Bump to 2.0.0.
23 |
24 | 2010-04-20 Emanuel Schütze
25 |
26 | * po/de.po: Use "pruefen" instead "ueberpruefen" for signatures.
27 |
28 | 2010-01-08 Marcus Brinkmann
29 |
30 | * Release 0.9.5.
31 |
32 | 2009-12-26 Marcus Brinkmann
33 |
34 | * Release 0.9.4.
35 |
36 | 2009-08-04 Marcus Brinkmann
37 |
38 | * doc/gpgex-en.html, doc/gpgex-de.html: Add link to Kleo manual.
39 |
40 | 2009-07-31 Emanuel Schütze
41 |
42 | * doc/gpgex-de.html, doc/gpgex-en.html: Remove checksum text,
43 | improve documentation for debug message.
44 |
45 | 2009-03-24 Werner Koch
46 |
47 | Release 0.9.3.
48 |
49 | 2009-03-10 Marcus Brinkmann
50 |
51 | * po/de.po, po/es.po, po/ru.po, po/ar.po: Change encrypt&sign to
52 | sign&encrypt everywhere.
53 |
54 | 2009-01-28 Werner Koch
55 |
56 | Release 0.9.2.
57 |
58 | 2009-01-22 Werner Koch
59 |
60 | * po/de.po: Change "verifizeren" to "überprüfen".
61 |
62 | 2008-06-04 Werner Koch
63 |
64 | * doc/gpgex.texi (Assuan Protocol): Replace the spec by a
65 | reference to the gpgme manual.
66 |
67 | 2008-03-26 Marcus Brinkmann
68 |
69 | Released 0.9.0.
70 |
71 | * po/LINGUAS: Add ar, es, ru.
72 |
73 | * Makefile.am (AUTOMAKE_OPTIONS): Add no-dist-gzip.
74 |
75 | * configure.ac: Prepare for release of 0.9.0.
76 |
77 | * po/ar.po, po/es.po, po/ru.po: New files.
78 | * po/de.po: Fix newline.
79 |
80 | 2007-11-26 Marcus Brinkmann
81 |
82 | * doc/gpgex-de.html, doc/gpgex-en.html: Add FIXME entries for
83 | missing hyperlinks.
84 |
85 | 2007-11-12 Marcus Brinkmann
86 |
87 | * configure.ac (WINVER): New symbol.
88 |
89 | 2007-11-08 Marcus Brinkmann
90 |
91 | * po/de.po: Update.
92 |
93 | * doc/gpgex-de.html, doc/gpgex-en.html: New files.
94 | * doc/Makefile.am (dist_doc_DATA): New variable.
95 |
96 | * doc/gpgex.texi: Complete protocol change from INPUT FILE to
97 | FILE. Also from IMPORT to IMPORT_FILES.
98 |
99 | 2007-11-02 Werner Koch
100 |
101 | * autogen.sh: Add --force option.
102 |
103 | * doc/gpgex.texi: Protocol change s/"INPUT FILE"/"FILE"/.
104 |
105 | 2007-10-08 Marcus Brinkmann
106 |
107 | * doc/gpgex.texi (Certificate management): New section
108 |
109 | * po/de.po: Convert to UTF-8.
110 |
111 | * autogen.sh: Add --add-missing to automake invocation.
112 | * configure.ac (AC_CONFIG_FILES): Add doc/Makefile.
113 | * Makefile.am (SUBDIRS): Add doc.
114 | * doc/: New directory.
115 |
116 | 2007-10-05 Marcus Brinkmann
117 |
118 | * po/de.po: Fix translation.
119 |
120 | * po/de.po: Update.
121 |
122 | 2007-09-11 Marcus Brinkmann
123 |
124 | * po/de.po: Update.
125 |
126 | * po/de.po: New file.
127 |
128 | * po/LINGUAS: Add de.
129 | * Makefile.am (DISTCHECK_CONFIGURE_FLAGS): Add
130 | --with-libassuan-prefix and --with-gpg-error-prefix.
131 |
132 | 2007-09-04 Marcus Brinkmann
133 |
134 | * m4/libassuan.m4, m4/gpg-error.m4: New files.
135 | * configure.ac: Check for libgpg-error and libassuan.
136 | * po/POTFILES.in: Add src/client.cc, src/gpgex.h and src/gpgex.cc.
137 |
138 | 2007-09-03 Marcus Brinkmann
139 |
140 | * m4/Makefile.am (EXTRA_DIST): Remove gpgme.m4 and gpg-error.m4.
141 |
142 | 2007-08-23 Marcus Brinkmann
143 |
144 | * Initial commit.
145 |
146 |
147 | Copyright 2007 g10 Code GmbH
148 |
149 | This file is free software; as a special exception the author gives
150 | unlimited permission to copy and/or distribute it, with or without
151 | modifications, as long as this notice is preserved.
152 |
153 | This file is distributed in the hope that it will be useful, but
154 | WITHOUT ANY WARRANTY, to the extent permitted by law; without even the
155 | implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
156 |
--------------------------------------------------------------------------------
/src/gpgex-class.cc:
--------------------------------------------------------------------------------
1 | /* gpgex-class.cc - gpgex component class implementation
2 | Copyright (C) 2007 g10 Code GmbH
3 |
4 | This file is part of GpgEX.
5 |
6 | GpgEX is free software; you can redistribute it and/or
7 | modify it under the terms of the GNU Lesser General Public
8 | License as published by the Free Software Foundation; either
9 | version 2 of the License, or (at your option) any later version.
10 |
11 | GpgEX is distributed in the hope that it will be useful,
12 | but WITHOUT ANY WARRANTY; without even the implied warranty of
13 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 | GNU Lesser General Public License for more details.
15 |
16 | You should have received a copy of the GNU Lesser General Public
17 | License along with this program; if not, write to the Free Software
18 | Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
19 | 02110-1301, USA. */
20 |
21 | #if HAVE_CONFIG_H
22 | #include
23 | #endif
24 |
25 | #include
26 |
27 | #include "main.h"
28 |
29 | #include "gpgex-class.h"
30 |
31 |
32 | /* The class ID in a form that can be used by certain interfaces. */
33 | CLSID CLSID_gpgex = CLSID_GPGEX;
34 |
35 |
36 | /* Because we do not use a type library (.tlb) resource file, we have
37 | to do all of the work manually. However, that's not a big issue,
38 | because we only register a new component class, and no custom
39 | interfaces. So, for example, we do not need to register proxy/stub
40 | DLLs. */
41 |
42 | /* Register the GpgEX component. */
43 | void
44 | gpgex_class::init (void)
45 | {
46 | char key[MAX_PATH];
47 | char value[MAX_PATH];
48 | HKEY key_handle = 0;
49 |
50 | /* FIXME: Error handling? */
51 |
52 | /* Set a key for our CLSID. */
53 | strcpy (key, "CLSID\\{" CLSID_GPGEX_STR "}");
54 | RegCreateKey (HKEY_CLASSES_ROOT, key, &key_handle);
55 | /* The default value is a human readable name for the class. */
56 | strcpy (value, "GpgEX");
57 | RegSetValueEx (key_handle, 0, 0, REG_SZ, (BYTE *) value, strlen (value) + 1);
58 | RegCloseKey (key_handle);
59 |
60 | /* The InprocServer32 key holds the path to the server component. */
61 | strcpy (key, "CLSID\\{" CLSID_GPGEX_STR "}\\InprocServer32");
62 | RegCreateKey (HKEY_CLASSES_ROOT, key, &key_handle);
63 | GetModuleFileName (gpgex_server::instance, value, MAX_PATH);
64 | RegSetValueEx (key_handle, 0, 0, REG_SZ, (BYTE *) value, strlen (value) + 1);
65 | /* We also need a threading model. */
66 | strcpy (key, "ThreadingModel");
67 | strcpy (value, "Apartment");
68 | RegSetValueEx (key_handle, key, 0, REG_SZ,
69 | (BYTE *) value, strlen (value) + 1);
70 | RegCloseKey (key_handle);
71 |
72 | strcpy (key, "*\\ShellEx\\ContextMenuHandlers\\GpgEX");
73 | RegCreateKey (HKEY_CLASSES_ROOT, key, &key_handle);
74 | /* The default value is the CLSID for the class. */
75 | strcpy (value, "{" CLSID_GPGEX_STR "}");
76 | RegSetValueEx (key_handle, 0, 0, REG_SZ, (BYTE *) value, strlen (value) + 1);
77 | RegCloseKey (key_handle);
78 |
79 | strcpy (key, "Directory\\ShellEx\\ContextMenuHandlers\\GpgEX");
80 | RegCreateKey (HKEY_CLASSES_ROOT, key, &key_handle);
81 | /* The default value is the CLSID for the class. */
82 | strcpy (value, "{" CLSID_GPGEX_STR "}");
83 | RegSetValueEx (key_handle, 0, 0, REG_SZ, (BYTE *) value, strlen (value) + 1);
84 | RegCloseKey (key_handle);
85 |
86 | #if 0
87 | /* We also have to approve the shell extension for Windows NT. */
88 | strcpy (key, "Software\\Microsoft\\Windows\\CurrentVersion\\Shell Extensions\\Approved");
89 | RegCreateKey (HKEY_LOCAL_MACHINE, key, &key_handle);
90 | /* The key is the CLSID, the value can be anything. */
91 | strcpy (key, "{" CLSID_GPGEX_STR "}");
92 | strcpy (value, "GpgEX");
93 | RegSetValueEx (key_handle, key, 0, REG_SZ,
94 | (BYTE *) value, strlen (value) + 1);
95 | RegCloseKey (key_handle);
96 | #endif
97 | }
98 |
99 |
100 | /* Unregister the GpgEX component. */
101 | void
102 | gpgex_class::deinit (void)
103 | {
104 | /* FIXME: Error handling? */
105 |
106 | #if 0
107 | RegDeleteValue (HKEY_LOCAL_MACHINE,
108 | "Software\\Microsoft\\Windows\\CurrentVersion"
109 | "\\Shell Extensions\\Approved", "{" CLSID_GPGEX_STR "}");
110 | #endif
111 |
112 | RegDeleteKey (HKEY_CLASSES_ROOT,
113 | "Directory\\ShellEx\\ContextMenuHandlers\\GpgEX");
114 | RegDeleteKey (HKEY_CLASSES_ROOT,
115 | "*\\ShellEx\\ContextMenuHandlers\\GpgEX");
116 |
117 | /* Delete registry keys in reverse order. */
118 | RegDeleteKey (HKEY_CLASSES_ROOT,
119 | "CLSID\\{" CLSID_GPGEX_STR "}\\InprocServer32");
120 | RegDeleteKey (HKEY_CLASSES_ROOT, "CLSID\\{" CLSID_GPGEX_STR "}");
121 | }
122 |
--------------------------------------------------------------------------------
/src/gpgex.h:
--------------------------------------------------------------------------------
1 | /* gpgex.h - gpgex prototypes
2 | Copyright (C) 2007 g10 Code GmbH
3 |
4 | This file is part of GpgEX.
5 |
6 | GpgEX is free software; you can redistribute it and/or
7 | modify it under the terms of the GNU Lesser General Public
8 | License as published by the Free Software Foundation; either
9 | version 2 of the License, or (at your option) any later version.
10 |
11 | GpgEX is distributed in the hope that it will be useful,
12 | but WITHOUT ANY WARRANTY; without even the implied warranty of
13 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 | GNU Lesser General Public License for more details.
15 |
16 | You should have received a copy of the GNU Lesser General Public
17 | License along with this program; if not, write to the Free Software
18 | Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
19 | 02110-1301, USA. */
20 |
21 | #ifndef GPGEX_H
22 | #define GPGEX_H
23 |
24 | #include
25 | #include
26 |
27 | using std::vector;
28 | using std::string;
29 |
30 | #include
31 | #include
32 |
33 | /* Our shell extension interface. We use multiple inheritance to
34 | achieve polymorphy.
35 |
36 | NOTE 1: By this we save some effort, but we can only provide one
37 | implementation for each virtual function signature. The overlap in
38 | the IUnknown interface does not matter, in fact it is a plus that
39 | we only have to implement it once. For other functions, it might
40 | be more of a problem. If this needs to be avoided, one can derive
41 | intermediate classes which inherit only one of the overlapping
42 | classes and contain a implementations for the overlapping method
43 | that call a purely virtual function of different, unambiguous
44 | names. For example, if there is bar::foo and baz::foo, classes
45 | mybar : public bar and mybaz : public baz can be defined with
46 | mybar::foo calling mybar::bar_foo and mybaz::foo calling
47 | mybaz::baz_foo. Then the final class can inherit mybar and mybaz
48 | and implement the virtual functions bar_foo and baz_foo, leading to
49 | the desired result.
50 |
51 | NOTE 2: It is not obvious why this approach works at all!
52 | Ignorance is bliss, I guess, because the multiple-inheritance
53 | approach is documented in many places, but rarely it is explained
54 | why it works. The naive explanation is that there is a virtual
55 | function table for each base class, and we can just use the address
56 | of the pointer to that table as our COM object pointer. However,
57 | what is missing from this description is that now the THIS pointer
58 | is incorrect, and needs to be adjusted by subtracting the offset of
59 | the base class inside the object when a function implementation is
60 | invoked (which exists in the derived class and overrides the
61 | abstract base class). Recent compilers seem to implement this by
62 | replacing the function pointer in the VTBL with an "adjustor thunk"
63 | which subtracts this offset and jumps to the actual function
64 | implementation (see the C++ ABI for GCC
65 | http://www.codesourcery.com/cxx-abi/abi.html and
66 | http://msdn.microsoft.com/archive/default.asp?url=/archive/en-us/dnarvc/html/jangrayhood.asp
67 | for MSVC++). But this is not the only possible implementation:
68 | Other compilers use a displacement field in each VTBL entry. The
69 | displacement field is often zero, and in this case an adjustor
70 | thunk is a good optimization. However, if a displacement field is
71 | used by the compiler, it changes the VTBL layout in memory and
72 | makes it non-compliant with COM! So let's all be happy that modern
73 | compilers agree on using adjustor thunks and cross our fingers, as
74 | there is no possible way we can even sanely check if the compiler
75 | complies. And you thought C++ was easy? */
76 |
77 | class gpgex_t : public IShellExtInit, public IContextMenu3
78 | {
79 | private:
80 | /* Per-object reference count. */
81 | LONG refcount;
82 |
83 | /* Support for IShellExtInit. */
84 | vector filenames;
85 |
86 | /* TRUE if all files in filenames are directly related to GPG. */
87 | BOOL all_files_gpg;
88 |
89 | public:
90 | /* Constructors and destructors. For these, we update the global
91 | component reference counter. */
92 | gpgex_t (void)
93 | : refcount (0)
94 | {
95 | TRACE_BEG (DEBUG_INIT, "gpgex_t::gpgex_t", this);
96 |
97 | gpgex_server::add_ref ();
98 |
99 | (void) TRACE_SUC ();
100 | }
101 |
102 | ~gpgex_t (void)
103 | {
104 | TRACE_BEG (DEBUG_INIT, "gpgex_t::~gpgex_t", this);
105 |
106 | gpgex_server::release ();
107 |
108 | (void) TRACE_SUC ();
109 | }
110 |
111 | /* Reset the instance between operations. */
112 | void reset (void);
113 |
114 | public:
115 | /* IUnknown methods. */
116 | STDMETHODIMP QueryInterface (REFIID riid, void **ppv);
117 | STDMETHODIMP_(ULONG) AddRef (void);
118 | STDMETHODIMP_(ULONG) Release (void);
119 |
120 | /* IShellExtInit methods. */
121 | STDMETHODIMP Initialize (LPCITEMIDLIST pIDFolder, IDataObject *pDataObj,
122 | HKEY hRegKey);
123 |
124 | /* IContextMenu methods. */
125 | STDMETHODIMP QueryContextMenu (HMENU hMenu, UINT indexMenu, UINT idCmdFirst,
126 | UINT idCmdLast, UINT uFlags);
127 | STDMETHODIMP GetCommandString (UINT_PTR idCommand,
128 | UINT uFlags, LPUINT lpReserved,
129 | LPSTR pszName, UINT uMaxNameLen);
130 | STDMETHODIMP InvokeCommand (LPCMINVOKECOMMANDINFO lpcmi);
131 |
132 | /* IContextMenu2 methods. */
133 | STDMETHODIMP HandleMenuMsg (UINT uMsg, WPARAM wParam, LPARAM lParam);
134 |
135 | /* IContextMenu3 methods. */
136 | STDMETHODIMP HandleMenuMsg2 (UINT uMsg, WPARAM wParam, LPARAM lParam,
137 | LRESULT *plResult);
138 | };
139 |
140 | #endif /* ! GPGEX_H */
141 |
--------------------------------------------------------------------------------
/m4/lib-prefix.m4:
--------------------------------------------------------------------------------
1 | # lib-prefix.m4 serial 2 (gettext-0.12)
2 | dnl Copyright (C) 2001-2003 Free Software Foundation, Inc.
3 | dnl This file is free software, distributed under the terms of the GNU
4 | dnl General Public License. As a special exception to the GNU General
5 | dnl Public License, this file may be distributed as part of a program
6 | dnl that contains a configuration script generated by Autoconf, under
7 | dnl the same distribution terms as the rest of that program.
8 |
9 | dnl From Bruno Haible.
10 |
11 | dnl AC_LIB_ARG_WITH is synonymous to AC_ARG_WITH in autoconf-2.13, and
12 | dnl similar to AC_ARG_WITH in autoconf 2.52...2.57 except that is doesn't
13 | dnl require excessive bracketing.
14 | ifdef([AC_HELP_STRING],
15 | [AC_DEFUN([AC_LIB_ARG_WITH], [AC_ARG_WITH([$1],[[$2]],[$3],[$4])])],
16 | [AC_DEFUN([AC_LIB_ARG_WITH], [AC_ARG_WITH([$1],[$2],[$3],[$4])])])
17 |
18 | dnl AC_LIB_PREFIX adds to the CPPFLAGS and LDFLAGS the flags that are needed
19 | dnl to access previously installed libraries. The basic assumption is that
20 | dnl a user will want packages to use other packages he previously installed
21 | dnl with the same --prefix option.
22 | dnl This macro is not needed if only AC_LIB_LINKFLAGS is used to locate
23 | dnl libraries, but is otherwise very convenient.
24 | AC_DEFUN([AC_LIB_PREFIX],
25 | [
26 | AC_BEFORE([$0], [AC_LIB_LINKFLAGS])
27 | AC_REQUIRE([AC_PROG_CC])
28 | AC_REQUIRE([AC_CANONICAL_HOST])
29 | AC_REQUIRE([AC_LIB_PREPARE_PREFIX])
30 | dnl By default, look in $includedir and $libdir.
31 | use_additional=yes
32 | AC_LIB_WITH_FINAL_PREFIX([
33 | eval additional_includedir=\"$includedir\"
34 | eval additional_libdir=\"$libdir\"
35 | ])
36 | AC_LIB_ARG_WITH([lib-prefix],
37 | [ --with-lib-prefix[=DIR] search for libraries in DIR/include and DIR/lib
38 | --without-lib-prefix don't search for libraries in includedir and libdir],
39 | [
40 | if test "X$withval" = "Xno"; then
41 | use_additional=no
42 | else
43 | if test "X$withval" = "X"; then
44 | AC_LIB_WITH_FINAL_PREFIX([
45 | eval additional_includedir=\"$includedir\"
46 | eval additional_libdir=\"$libdir\"
47 | ])
48 | else
49 | additional_includedir="$withval/include"
50 | additional_libdir="$withval/lib"
51 | fi
52 | fi
53 | ])
54 | if test $use_additional = yes; then
55 | dnl Potentially add $additional_includedir to $CPPFLAGS.
56 | dnl But don't add it
57 | dnl 1. if it's the standard /usr/include,
58 | dnl 2. if it's already present in $CPPFLAGS,
59 | dnl 3. if it's /usr/local/include and we are using GCC on Linux,
60 | dnl 4. if it doesn't exist as a directory.
61 | if test "X$additional_includedir" != "X/usr/include"; then
62 | haveit=
63 | for x in $CPPFLAGS; do
64 | AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"])
65 | if test "X$x" = "X-I$additional_includedir"; then
66 | haveit=yes
67 | break
68 | fi
69 | done
70 | if test -z "$haveit"; then
71 | if test "X$additional_includedir" = "X/usr/local/include"; then
72 | if test -n "$GCC"; then
73 | case $host_os in
74 | linux*) haveit=yes;;
75 | esac
76 | fi
77 | fi
78 | if test -z "$haveit"; then
79 | if test -d "$additional_includedir"; then
80 | dnl Really add $additional_includedir to $CPPFLAGS.
81 | CPPFLAGS="${CPPFLAGS}${CPPFLAGS:+ }-I$additional_includedir"
82 | fi
83 | fi
84 | fi
85 | fi
86 | dnl Potentially add $additional_libdir to $LDFLAGS.
87 | dnl But don't add it
88 | dnl 1. if it's the standard /usr/lib,
89 | dnl 2. if it's already present in $LDFLAGS,
90 | dnl 3. if it's /usr/local/lib and we are using GCC on Linux,
91 | dnl 4. if it doesn't exist as a directory.
92 | if test "X$additional_libdir" != "X/usr/lib"; then
93 | haveit=
94 | for x in $LDFLAGS; do
95 | AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"])
96 | if test "X$x" = "X-L$additional_libdir"; then
97 | haveit=yes
98 | break
99 | fi
100 | done
101 | if test -z "$haveit"; then
102 | if test "X$additional_libdir" = "X/usr/local/lib"; then
103 | if test -n "$GCC"; then
104 | case $host_os in
105 | linux*) haveit=yes;;
106 | esac
107 | fi
108 | fi
109 | if test -z "$haveit"; then
110 | if test -d "$additional_libdir"; then
111 | dnl Really add $additional_libdir to $LDFLAGS.
112 | LDFLAGS="${LDFLAGS}${LDFLAGS:+ }-L$additional_libdir"
113 | fi
114 | fi
115 | fi
116 | fi
117 | fi
118 | ])
119 |
120 | dnl AC_LIB_PREPARE_PREFIX creates variables acl_final_prefix,
121 | dnl acl_final_exec_prefix, containing the values to which $prefix and
122 | dnl $exec_prefix will expand at the end of the configure script.
123 | AC_DEFUN([AC_LIB_PREPARE_PREFIX],
124 | [
125 | dnl Unfortunately, prefix and exec_prefix get only finally determined
126 | dnl at the end of configure.
127 | if test "X$prefix" = "XNONE"; then
128 | acl_final_prefix="$ac_default_prefix"
129 | else
130 | acl_final_prefix="$prefix"
131 | fi
132 | if test "X$exec_prefix" = "XNONE"; then
133 | acl_final_exec_prefix='${prefix}'
134 | else
135 | acl_final_exec_prefix="$exec_prefix"
136 | fi
137 | acl_save_prefix="$prefix"
138 | prefix="$acl_final_prefix"
139 | eval acl_final_exec_prefix=\"$acl_final_exec_prefix\"
140 | prefix="$acl_save_prefix"
141 | ])
142 |
143 | dnl AC_LIB_WITH_FINAL_PREFIX([statement]) evaluates statement, with the
144 | dnl variables prefix and exec_prefix bound to the values they will have
145 | dnl at the end of the configure script.
146 | AC_DEFUN([AC_LIB_WITH_FINAL_PREFIX],
147 | [
148 | acl_save_prefix="$prefix"
149 | prefix="$acl_final_prefix"
150 | acl_save_exec_prefix="$exec_prefix"
151 | exec_prefix="$acl_final_exec_prefix"
152 | $1
153 | exec_prefix="$acl_save_exec_prefix"
154 | prefix="$acl_save_prefix"
155 | ])
156 |
--------------------------------------------------------------------------------
/src/debug.h:
--------------------------------------------------------------------------------
1 | /* debug.h - trace prototypes
2 | Copyright (C) 2007 g10 Code GmbH
3 |
4 | This file is part of GpgEX.
5 |
6 | GpgEX is free software; you can redistribute it and/or
7 | modify it under the terms of the GNU Lesser General Public
8 | License as published by the Free Software Foundation; either
9 | version 2 of the License, or (at your option) any later version.
10 |
11 | GpgEX is distributed in the hope that it will be useful,
12 | but WITHOUT ANY WARRANTY; without even the implied warranty of
13 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 | GNU Lesser General Public License for more details.
15 |
16 | You should have received a copy of the GNU Lesser General Public
17 | License along with this program; if not, write to the Free Software
18 | Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
19 | 02110-1301, USA. */
20 |
21 | #ifndef DEBUG_H
22 | #define DEBUG_H 1
23 |
24 | #include
25 |
26 | #include
27 |
28 | #ifdef __cplusplus
29 | extern "C" {
30 | #if 0
31 | }
32 | #endif
33 | #endif
34 |
35 |
36 | #define DEBUG_INIT 1
37 | #define DEBUG_CONTEXT_MENU 2
38 | #define DEBUG_ASSUAN 4
39 |
40 | /* No flags on means no debugging. */
41 | extern unsigned int debug_flags;
42 |
43 | /* Debug log stream. */
44 | extern FILE *debug_file;
45 |
46 |
47 | #define STRINGIFY(v) #v
48 |
49 | /* Log the formatted string FORMAT in categories FLAGS. */
50 | void _gpgex_debug (unsigned int flags, const char *format, ...);
51 |
52 | #define _TRACE(lvl, name, tag) \
53 | int _gpgex_trace_level = lvl; \
54 | const char *const _gpgex_trace_func = name; \
55 | const char *const _gpgex_trace_tagname = STRINGIFY (tag); \
56 | void *_gpgex_trace_tag = (void *) tag
57 |
58 | #define TRACE_BEG(lvl, name, tag) \
59 | _TRACE (lvl, name, tag); \
60 | _gpgex_debug (_gpgex_trace_level, "%s (%s=0x%x): enter\n", \
61 | _gpgex_trace_func, _gpgex_trace_tagname, \
62 | _gpgex_trace_tag)
63 | #define TRACE_BEG0(lvl, name, tag, fmt) \
64 | _TRACE (lvl, name, tag); \
65 | _gpgex_debug (_gpgex_trace_level, "%s (%s=0x%x): enter: " fmt "\n", \
66 | _gpgex_trace_func, _gpgex_trace_tagname, \
67 | _gpgex_trace_tag)
68 | #define TRACE_BEG1(lvl, name, tag, fmt, arg1) \
69 | _TRACE (lvl, name, tag); \
70 | _gpgex_debug (_gpgex_trace_level, "%s (%s=0x%x): enter: " fmt "\n", \
71 | _gpgex_trace_func, _gpgex_trace_tagname, \
72 | _gpgex_trace_tag, arg1)
73 | #define TRACE_BEG2(lvl, name, tag, fmt, arg1, arg2) \
74 | _TRACE (lvl, name, tag); \
75 | _gpgex_debug (_gpgex_trace_level, "%s (%s=0x%x): enter: " fmt "\n", \
76 | _gpgex_trace_func, _gpgex_trace_tagname, \
77 | _gpgex_trace_tag, arg1, arg2)
78 | #define TRACE_BEG3(lvl, name, tag, fmt, arg1, arg2, arg3) \
79 | _TRACE (lvl, name, tag); \
80 | _gpgex_debug (_gpgex_trace_level, "%s (%s=0x%x): enter: " fmt "\n", \
81 | _gpgex_trace_func, _gpgex_trace_tagname, \
82 | _gpgex_trace_tag, arg1, arg2, arg3)
83 | #define TRACE_BEG4(lvl, name, tag, fmt, arg1, arg2, arg3, arg4) \
84 | _TRACE (lvl, name, tag); \
85 | _gpgex_debug (_gpgex_trace_level, "%s (%s=0x%x): enter: " fmt "\n", \
86 | _gpgex_trace_func, _gpgex_trace_tagname, \
87 | _gpgex_trace_tag, arg1, arg2, arg3, arg4)
88 | #define TRACE_BEG5(lvl, name, tag, fmt, arg1, arg2, arg3, arg4, arg5) \
89 | _TRACE (lvl, name, tag); \
90 | _gpgex_debug (_gpgex_trace_level, "%s (%s=0x%x): enter: " fmt "\n", \
91 | _gpgex_trace_func, _gpgex_trace_tagname, \
92 | _gpgex_trace_tag, arg1, arg2, arg3, arg4, arg5)
93 | #define TRACE_BEG12(lvl, name, tag, fmt, arg1, arg2, arg3, arg4, \
94 | arg5, arg6, arg7, arg8, arg9, arg10, arg11, arg12) \
95 | _TRACE (lvl, name, tag); \
96 | _gpgex_debug (_gpgex_trace_level, "%s (%s=0x%x): enter: " fmt "\n", \
97 | _gpgex_trace_func, _gpgex_trace_tagname, \
98 | _gpgex_trace_tag, arg1, arg2, arg3, arg4, arg5, arg6, \
99 | arg7, arg8, arg9, arg10, arg11, arg12)
100 | #define TRACE_BEG13(lvl, name, tag, fmt, arg1, arg2, arg3, arg4, \
101 | arg5, arg6, arg7, arg8, arg9, arg10, arg11, arg12, \
102 | arg13) \
103 | _TRACE (lvl, name, tag); \
104 | _gpgex_debug (_gpgex_trace_level, "%s (%s=0x%x): enter: " fmt "\n", \
105 | _gpgex_trace_func, _gpgex_trace_tagname, \
106 | _gpgex_trace_tag, arg1, arg2, arg3, arg4, arg5, arg6, \
107 | arg7, arg8, arg9, arg10, arg11, arg12, arg13)
108 | #define TRACE_BEG22(lvl, name, tag, fmt, arg1, arg2, arg3, arg4, \
109 | arg5, arg6, arg7, arg8, arg9, arg10, arg11, arg12, \
110 | arg13, arg14, arg15, arg16, arg17, arg18, arg19, \
111 | arg20, arg21, arg22) \
112 | _TRACE (lvl, name, tag); \
113 | _gpgex_debug (_gpgex_trace_level, "%s (%s=0x%x): enter: " fmt "\n", \
114 | _gpgex_trace_func, _gpgex_trace_tagname, \
115 | _gpgex_trace_tag, arg1, arg2, arg3, arg4, arg5, arg6, \
116 | arg7, arg8, arg9, arg10, arg11, arg12, arg13, arg14, \
117 | arg15, arg16, arg17, arg18, arg19, arg20, arg21, \
118 | arg22)
119 |
120 | #define TRACE(lvl, name, tag) \
121 | (_gpgex_debug (lvl, "%s (%s=0x%x): call\n", \
122 | name, STRINGIFY (tag), (void *)(uintptr_t)tag), 0)
123 | #define TRACE0(lvl, name, tag, fmt) \
124 | (_gpgex_debug (lvl, "%s (%s=0x%x): call: " fmt "\n", \
125 | name, STRINGIFY (tag), (void *) tag), 0)
126 | #define TRACE1(lvl, name, tag, fmt, arg1) \
127 | (_gpgex_debug (lvl, "%s (%s=0x%x): call: " fmt "\n", \
128 | name, STRINGIFY (tag), (void *) tag, arg1), 0)
129 | #define TRACE2(lvl, name, tag, fmt, arg1, arg2) \
130 | (_gpgex_debug (lvl, "%s (%s=0x%x): call: " fmt "\n", \
131 | name, STRINGIFY (tag), (void *) tag, arg1, arg2), 0)
132 | #define TRACE3(lvl, name, tag, fmt, arg1, arg2, arg3) \
133 | (_gpgex_debug (lvl, "%s (%s=0x%x): call: " fmt "\n", \
134 | name, STRINGIFY (tag), (void *) tag, arg1, arg2, \
135 | arg3), 0)
136 | #define TRACE6(lvl, name, tag, fmt, arg1, arg2, arg3, arg4, arg5, arg6) \
137 | (_gpgex_debug (lvl, "%s (%s=0x%x): call: " fmt "\n", \
138 | name, STRINGIFY (tag), (void *) tag, arg1, arg2, arg3, \
139 | arg4, arg5, arg6), 0)
140 |
141 | #define TRACE_GPGERR(err) \
142 | err == 0 ? (TRACE_SUC ()) : \
143 | (_gpgex_debug (_gpgex_trace_level, "%s (%s=0x%x): error: %s <%s>\n", \
144 | _gpgex_trace_func, _gpgex_trace_tagname, \
145 | _gpgex_trace_tag, gpg_strerror (err), \
146 | gpg_strsource (err)), (err))
147 |
148 | #define TRACE_RES(err) \
149 | err == S_OK ? (TRACE_SUC ()) : \
150 | (_gpgex_debug (_gpgex_trace_level, "%s (%s=0x%x): %s: ec=%x\n", \
151 | _gpgex_trace_func, _gpgex_trace_tagname, \
152 | _gpgex_trace_tag, \
153 | SUCCEEDED (err) ? "leave" : "error", \
154 | err), (err))
155 |
156 | #define TRACE_SUC() \
157 | (_gpgex_debug (_gpgex_trace_level, "%s (%s=0x%x): leave\n", \
158 | _gpgex_trace_func, _gpgex_trace_tagname, \
159 | _gpgex_trace_tag), 0)
160 | #define TRACE_SUC0(fmt) \
161 | (_gpgex_debug (_gpgex_trace_level, "%s (%s=0x%x): leave: " fmt "\n", \
162 | _gpgex_trace_func, _gpgex_trace_tagname, \
163 | _gpgex_trace_tag), 0)
164 | #define TRACE_SUC1(fmt, arg1) \
165 | (_gpgex_debug (_gpgex_trace_level, "%s (%s=0x%x): leave: " fmt "\n", \
166 | _gpgex_trace_func, _gpgex_trace_tagname, \
167 | _gpgex_trace_tag, arg1), 0)
168 | #define TRACE_SUC2(fmt, arg1, arg2) \
169 | (_gpgex_debug (_gpgex_trace_level, "%s (%s=0x%x): leave: " fmt "\n", \
170 | _gpgex_trace_func, _gpgex_trace_tagname, \
171 | _gpgex_trace_tag, arg1, arg2), 0)
172 | #define TRACE_SUC5(fmt, arg1, arg2, arg3, arg4, arg5) \
173 | (_gpgex_debug (_gpgex_trace_level, "%s (%s=0x%x): leave: " fmt "\n", \
174 | _gpgex_trace_func, _gpgex_trace_tagname, \
175 | _gpgex_trace_tag, arg1, arg2, arg3, arg4, arg5), 0)
176 |
177 | #define TRACE_LOG(fmt) \
178 | (_gpgex_debug (_gpgex_trace_level, "%s (%s=0x%x): check: " fmt "\n", \
179 | _gpgex_trace_func, _gpgex_trace_tagname, \
180 | _gpgex_trace_tag), 0)
181 | #define TRACE_LOG1(fmt, arg1) \
182 | (_gpgex_debug (_gpgex_trace_level, "%s (%s=0x%x): check: " fmt "\n", \
183 | _gpgex_trace_func, _gpgex_trace_tagname, \
184 | _gpgex_trace_tag, arg1), 0)
185 | #define TRACE_LOG2(fmt, arg1, arg2) \
186 | (_gpgex_debug (_gpgex_trace_level, "%s (%s=0x%x): check: " fmt "\n", \
187 | _gpgex_trace_func, _gpgex_trace_tagname, \
188 | _gpgex_trace_tag, arg1, arg2), 0)
189 | #define TRACE_LOG3(fmt, arg1, arg2, arg3) \
190 | (_gpgex_debug (_gpgex_trace_level, "%s (%s=0x%x): check: " fmt "\n", \
191 | _gpgex_trace_func, _gpgex_trace_tagname, \
192 | _gpgex_trace_tag, arg1, arg2, arg3), 0)
193 | #define TRACE_LOG4(fmt, arg1, arg2, arg3, arg4) \
194 | (_gpgex_debug (_gpgex_trace_level, "%s (%s=0x%x): check: " fmt "\n", \
195 | _gpgex_trace_func, _gpgex_trace_tagname, \
196 | _gpgex_trace_tag, arg1, arg2, arg3, arg4), 0)
197 | #define TRACE_LOG6(fmt, arg1, arg2, arg3, arg4, arg5, arg6) \
198 | (_gpgex_debug (_gpgex_trace_level, "%s (%s=0x%x): check: " fmt "\n", \
199 | _gpgex_trace_func, _gpgex_trace_tagname, \
200 | _gpgex_trace_tag, arg1, arg2, arg3, arg4, arg5, \
201 | arg6), 0)
202 |
203 | #ifdef __cplusplus
204 | #if 0
205 | {
206 | #endif
207 | }
208 | #endif
209 |
210 | #endif
211 |
--------------------------------------------------------------------------------
/src/main.cc:
--------------------------------------------------------------------------------
1 | /* main.cc - DLL entry point
2 | Copyright (C) 2007, 2010, 2013 g10 Code GmbH
3 |
4 | This file is part of GpgEX.
5 |
6 | GpgEX is free software; you can redistribute it and/or
7 | modify it under the terms of the GNU Lesser General Public License
8 | as published by the Free Software Foundation; either version 2.1
9 | of the License, or (at your option) any later version.
10 |
11 | GpgEX is distributed in the hope that it will be useful,
12 | but WITHOUT ANY WARRANTY; without even the implied warranty of
13 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
14 | General Public License for more details.
15 |
16 | You should have received a copy of the GNU Lesser General Public
17 | License along with this program; if not, see .
18 | */
19 |
20 | #if HAVE_CONFIG_H
21 | #include
22 | #endif
23 |
24 | #include
25 | #include
26 | #include
27 | #include
28 | #include
29 |
30 | #include
31 | #include
32 |
33 | #include "gpgex-class.h"
34 | #include "gpgex-factory.h"
35 | #include "main.h"
36 |
37 |
38 | /* This is the main part of the COM server component. The component
39 | is an in-process server DLL. */
40 |
41 | /* The instance of this DLL. */
42 | HINSTANCE gpgex_server::instance;
43 |
44 | /* The number of references to this component. */
45 | LONG gpgex_server::refcount;
46 |
47 | /* The name of the UI-server or NULL if not known. */
48 | const char *gpgex_server::ui_server;
49 |
50 |
51 |
52 | /** Get the Gpg4win Install directory.
53 | *
54 | * This function returns the root of the install directory of Gpg4win
55 | * or GnuPG-[VS-]Desktop. Noet that the fucntion returns only
56 | * standard slashes.
57 | *
58 | * @returns NULL if no dir could be found - this indicates a bad
59 | * installation. Otherwise a malloced string with the utf-8 name.
60 | */
61 | const char *
62 | get_gpg4win_dir (void)
63 | {
64 | static int initialized;
65 | static char *mydir;
66 |
67 | if (!initialized)
68 | {
69 | wchar_t *wmodulename;
70 | char *modulename = NULL;
71 | char *p;
72 |
73 | wmodulename = (wchar_t*)calloc (MAX_PATH+5, sizeof *wmodulename);
74 | if (!GetModuleFileNameW (gpgex_server::instance, wmodulename, MAX_PATH))
75 | _gpgex_debug (DEBUG_INIT, "GetModuleFileName failed");
76 | else
77 | {
78 | modulename = gpgrt_wchar_to_utf8 (wmodulename);
79 | _gpgex_debug (DEBUG_INIT, "GetModuleFileName: '%s'\n", modulename);
80 | p = strrchr (modulename, '\\');
81 | if (p)
82 | {
83 | *p = 0;
84 | /* MODULENAME is now the actual directory from where we
85 | * were executed. In the most cases this is either the
86 | * bin or the bin_64 sub directory. */
87 | p = strrchr (modulename, '\\');
88 | if (p)
89 | {
90 | *p = 0;
91 | for (p=modulename; *p; p++)
92 | if (*p == '\\')
93 | *p = '/';
94 | mydir = modulename; /* Not really threadsafe, but okay. */
95 | modulename = NULL;
96 | initialized = 1;
97 | _gpgex_debug (DEBUG_INIT, "Using install dir: '%s'\n", mydir);
98 | }
99 | }
100 | }
101 | free (modulename);
102 | free (wmodulename);
103 | }
104 |
105 | return mydir;
106 | }
107 |
108 |
109 | static char *
110 | get_locale_dir (void)
111 | {
112 | return gpgrt_fconcat (0, get_gpg4win_dir (), "share/locale", NULL);
113 | }
114 |
115 |
116 | static void
117 | drop_locale_dir (char *locale_dir)
118 | {
119 | free (locale_dir);
120 | }
121 |
122 |
123 | static void
124 | i18n_init (void)
125 | {
126 | char *locale_dir;
127 |
128 | locale_dir = get_locale_dir ();
129 | if (locale_dir)
130 | {
131 | bindtextdomain (PACKAGE_GT, locale_dir);
132 | drop_locale_dir (locale_dir);
133 | }
134 | textdomain (PACKAGE_GT);
135 | }
136 |
137 |
138 | static CRITICAL_SECTION debug_lock;
139 |
140 | /* No flags on means no debugging. */
141 | unsigned int debug_flags = 0;
142 |
143 | /* Debug log file. */
144 | FILE *debug_file;
145 |
146 |
147 | /* Get the filename of the debug file, if any. */
148 | static char *
149 | get_debug_file (void)
150 | {
151 | return gpgrt_w32_reg_get_string ("\\Software\\Gpg4win:GpgEX Debug File");
152 | }
153 |
154 |
155 | static void
156 | debug_init (void)
157 | {
158 | char *filename;
159 |
160 | /* Sanity check. */
161 | if (debug_file)
162 | return;
163 |
164 | InitializeCriticalSection (&debug_lock);
165 |
166 | filename = get_debug_file ();
167 | if (!filename)
168 | return;
169 |
170 | debug_file = fopen (filename, "a");
171 | free (filename);
172 | if (!debug_file)
173 | return;
174 |
175 | /* FIXME: Make this configurable eventually. */
176 | debug_flags = DEBUG_INIT | DEBUG_CONTEXT_MENU | DEBUG_ASSUAN;
177 | }
178 |
179 |
180 | static void
181 | debug_deinit (void)
182 | {
183 | if (debug_file)
184 | {
185 | fclose (debug_file);
186 | debug_file = NULL;
187 | }
188 | }
189 |
190 |
191 |
192 |
193 |
194 |
195 | #ifdef __cplusplus
196 | extern "C" {
197 | #if 0
198 | }
199 | #endif
200 | #endif
201 |
202 | /* Log the formatted string FORMAT at debug level LEVEL or higher. */
203 | extern
204 | void
205 | _gpgex_debug (unsigned int flags, const char *format, ...)
206 | {
207 | va_list arg_ptr;
208 | int saved_errno;
209 |
210 | saved_errno = errno;
211 |
212 | if (! (debug_flags & flags))
213 | return;
214 |
215 | va_start (arg_ptr, format);
216 | EnterCriticalSection (&debug_lock);
217 | vfprintf (debug_file, format, arg_ptr);
218 | va_end (arg_ptr);
219 | if (format && *format && format[strlen (format) - 1] != '\n')
220 | putc ('\n', debug_file);
221 | LeaveCriticalSection (&debug_lock);
222 | fflush (debug_file);
223 |
224 | errno = saved_errno;
225 | }
226 |
227 |
228 | #ifdef __cplusplus
229 | #if 0
230 | {
231 | #endif
232 | }
233 | #endif
234 |
235 |
236 | /* Entry point called by DLL loader. */
237 | STDAPI
238 | DllMain (HINSTANCE hinst, DWORD reason, LPVOID reserved)
239 | {
240 | if (reason == DLL_PROCESS_ATTACH)
241 | {
242 | gpgex_server::instance = hinst;
243 |
244 | /* Early initializations of our subsystems. */
245 | gpg_err_init ();
246 |
247 | debug_init ();
248 |
249 | i18n_init ();
250 |
251 | if (debug_flags & DEBUG_ASSUAN)
252 | {
253 | assuan_set_assuan_log_stream (debug_file);
254 | assuan_set_assuan_log_prefix ("gpgex:assuan");
255 | }
256 | assuan_set_gpg_err_source (GPG_ERR_SOURCE_DEFAULT);
257 |
258 | (void) TRACE0 (DEBUG_INIT, "DllMain", hinst,
259 | "reason=DLL_PROCESS_ATTACH");
260 |
261 | {
262 | WSADATA wsadat;
263 |
264 | WSAStartup (0x202, &wsadat);
265 | }
266 | }
267 | else if (reason == DLL_PROCESS_DETACH)
268 | {
269 | WSACleanup ();
270 |
271 | (void) TRACE0 (DEBUG_INIT, "DllMain", hinst,
272 | "reason=DLL_PROCESS_DETACH");
273 |
274 | debug_deinit ();
275 | /* We are linking statically to libgpg-error which means there
276 | is no DllMain in libgpg-error. Thus we call the deinit
277 | function to cleanly deinitialize libgpg-error. */
278 | gpg_err_deinit (0);
279 | }
280 |
281 | return TRUE;
282 | }
283 |
284 |
285 | /* Check if the server component, the DLL, can be unloaded. This is
286 | called by the client of this in-process server (for example through
287 | CoFreeUnusedLibrary) whenever it is considered to unload this
288 | server component. */
289 | STDAPI
290 | DllCanUnloadNow (void)
291 | {
292 | (void) TRACE (DEBUG_INIT, "DllCanUnloadNow", gpgex_server::refcount);
293 | return (gpgex_server::refcount == 0 ? S_OK : S_FALSE);
294 | }
295 |
296 |
297 | /* Registry handling. The DLL is registered with regsvr32.exe. */
298 |
299 | /* Register the DLL. */
300 | STDAPI
301 | DllRegisterServer (void)
302 | {
303 | gpgex_class::init ();
304 |
305 | /* Notify the shell about the change. */
306 | SHChangeNotify (SHCNE_ASSOCCHANGED, SHCNF_IDLIST, NULL, NULL);
307 |
308 | return S_OK;
309 | }
310 |
311 |
312 | /* Unregister the DLL. */
313 | STDAPI
314 | DllUnregisterServer (void)
315 | {
316 | gpgex_class::deinit ();
317 |
318 | /* Notify the shell about the change. */
319 | SHChangeNotify (SHCNE_ASSOCCHANGED, SHCNF_IDLIST, NULL, NULL);
320 |
321 | return S_OK;
322 | }
323 |
324 |
325 | /* Acquire a reference for the class factory of object class RCLSID
326 | with the interface RIID (typically IID_IClassFactory) and return it
327 | in PPVOUT. Typically called by CoGetClassObject for in-process
328 | server components. */
329 | STDAPI
330 | DllGetClassObject (REFCLSID rclsid, REFIID riid, LPVOID *ppv)
331 | {
332 | /* We have to evaluate the arguments first. */
333 | #define _TRACE_BEG22(a,b,c,d,e,f) TRACE_BEG22(a,b,c,d,e,f)
334 | _TRACE_BEG22 (DEBUG_INIT, "DllGetClassObject", ppv,
335 | "rclsid=" GUID_FMT ", riid=" GUID_FMT,
336 | GUID_ARG (rclsid), GUID_ARG (riid));
337 |
338 | if (rclsid == CLSID_gpgex)
339 | {
340 | HRESULT err = gpgex_factory.QueryInterface (riid, ppv);
341 | return TRACE_RES (err);
342 | }
343 |
344 | /* Be nice to broken software. */
345 | *ppv = NULL;
346 |
347 | return TRACE_RES (CLASS_E_CLASSNOTAVAILABLE);
348 | }
349 |
--------------------------------------------------------------------------------
/m4/po.m4:
--------------------------------------------------------------------------------
1 | # po.m4 serial 1 (gettext-0.12)
2 | dnl Copyright (C) 1995-2003 Free Software Foundation, Inc.
3 | dnl This file is free software, distributed under the terms of the GNU
4 | dnl General Public License. As a special exception to the GNU General
5 | dnl Public License, this file may be distributed as part of a program
6 | dnl that contains a configuration script generated by Autoconf, under
7 | dnl the same distribution terms as the rest of that program.
8 | dnl
9 | dnl This file can can be used in projects which are not available under
10 | dnl the GNU General Public License or the GNU Library General Public
11 | dnl License but which still want to provide support for the GNU gettext
12 | dnl functionality.
13 | dnl Please note that the actual code of the GNU gettext library is covered
14 | dnl by the GNU Library General Public License, and the rest of the GNU
15 | dnl gettext package package is covered by the GNU General Public License.
16 | dnl They are *not* in the public domain.
17 |
18 | dnl Authors:
19 | dnl Ulrich Drepper , 1995-2000.
20 | dnl Bruno Haible , 2000-2003.
21 |
22 | dnl Checks for all prerequisites of the po subdirectory.
23 | AC_DEFUN([AM_PO_SUBDIRS],
24 | [
25 | AC_REQUIRE([AC_PROG_MAKE_SET])dnl
26 | AC_REQUIRE([AC_PROG_INSTALL])dnl
27 | AC_REQUIRE([AM_MKINSTALLDIRS])dnl
28 | AC_REQUIRE([AM_NLS])dnl
29 |
30 | dnl Perform the following tests also if --disable-nls has been given,
31 | dnl because they are needed for "make dist" to work.
32 |
33 | dnl Search for GNU msgfmt in the PATH.
34 | dnl The first test excludes Solaris msgfmt and early GNU msgfmt versions.
35 | dnl The second test excludes FreeBSD msgfmt.
36 | AM_PATH_PROG_WITH_TEST(MSGFMT, msgfmt,
37 | [$ac_dir/$ac_word --statistics /dev/null >/dev/null 2>&1 &&
38 | (if $ac_dir/$ac_word --statistics /dev/null 2>&1 >/dev/null | grep usage >/dev/null; then exit 1; else exit 0; fi)],
39 | :)
40 | AC_PATH_PROG(GMSGFMT, gmsgfmt, $MSGFMT)
41 |
42 | dnl Search for GNU xgettext 0.12 or newer in the PATH.
43 | dnl The first test excludes Solaris xgettext and early GNU xgettext versions.
44 | dnl The second test excludes FreeBSD xgettext.
45 | AM_PATH_PROG_WITH_TEST(XGETTEXT, xgettext,
46 | [$ac_dir/$ac_word --omit-header --copyright-holder= --msgid-bugs-address= /dev/null >/dev/null 2>&1 &&
47 | (if $ac_dir/$ac_word --omit-header --copyright-holder= --msgid-bugs-address= /dev/null 2>&1 >/dev/null | grep usage >/dev/null; then exit 1; else exit 0; fi)],
48 | :)
49 | dnl Remove leftover from FreeBSD xgettext call.
50 | rm -f messages.po
51 |
52 | dnl Search for GNU msgmerge 0.11 or newer in the PATH.
53 | AM_PATH_PROG_WITH_TEST(MSGMERGE, msgmerge,
54 | [$ac_dir/$ac_word --update -q /dev/null /dev/null >/dev/null 2>&1], :)
55 |
56 | dnl This could go away some day; the PATH_PROG_WITH_TEST already does it.
57 | dnl Test whether we really found GNU msgfmt.
58 | if test "$GMSGFMT" != ":"; then
59 | dnl If it is no GNU msgfmt we define it as : so that the
60 | dnl Makefiles still can work.
61 | if $GMSGFMT --statistics /dev/null >/dev/null 2>&1 &&
62 | (if $GMSGFMT --statistics /dev/null 2>&1 >/dev/null | grep usage >/dev/null; then exit 1; else exit 0; fi); then
63 | : ;
64 | else
65 | GMSGFMT=`echo "$GMSGFMT" | sed -e 's,^.*/,,'`
66 | AC_MSG_RESULT(
67 | [found $GMSGFMT program is not GNU msgfmt; ignore it])
68 | GMSGFMT=":"
69 | fi
70 | fi
71 |
72 | dnl This could go away some day; the PATH_PROG_WITH_TEST already does it.
73 | dnl Test whether we really found GNU xgettext.
74 | if test "$XGETTEXT" != ":"; then
75 | dnl If it is no GNU xgettext we define it as : so that the
76 | dnl Makefiles still can work.
77 | if $XGETTEXT --omit-header --copyright-holder= --msgid-bugs-address= /dev/null >/dev/null 2>&1 &&
78 | (if $XGETTEXT --omit-header --copyright-holder= --msgid-bugs-address= /dev/null 2>&1 >/dev/null | grep usage >/dev/null; then exit 1; else exit 0; fi); then
79 | : ;
80 | else
81 | AC_MSG_RESULT(
82 | [found xgettext program is not GNU xgettext; ignore it])
83 | XGETTEXT=":"
84 | fi
85 | dnl Remove leftover from FreeBSD xgettext call.
86 | rm -f messages.po
87 | fi
88 |
89 | AC_OUTPUT_COMMANDS([
90 | for ac_file in $CONFIG_FILES; do
91 | # Support "outfile[:infile[:infile...]]"
92 | case "$ac_file" in
93 | *:*) ac_file=`echo "$ac_file"|sed 's%:.*%%'` ;;
94 | esac
95 | # PO directories have a Makefile.in generated from Makefile.in.in.
96 | case "$ac_file" in */Makefile.in)
97 | # Adjust a relative srcdir.
98 | ac_dir=`echo "$ac_file"|sed 's%/[^/][^/]*$%%'`
99 | ac_dir_suffix="/`echo "$ac_dir"|sed 's%^\./%%'`"
100 | ac_dots=`echo "$ac_dir_suffix"|sed 's%/[^/]*%../%g'`
101 | # In autoconf-2.13 it is called $ac_given_srcdir.
102 | # In autoconf-2.50 it is called $srcdir.
103 | test -n "$ac_given_srcdir" || ac_given_srcdir="$srcdir"
104 | case "$ac_given_srcdir" in
105 | .) top_srcdir=`echo $ac_dots|sed 's%/$%%'` ;;
106 | /*) top_srcdir="$ac_given_srcdir" ;;
107 | *) top_srcdir="$ac_dots$ac_given_srcdir" ;;
108 | esac
109 | if test -f "$ac_given_srcdir/$ac_dir/POTFILES.in"; then
110 | rm -f "$ac_dir/POTFILES"
111 | test -n "$as_me" && echo "$as_me: creating $ac_dir/POTFILES" || echo "creating $ac_dir/POTFILES"
112 | cat "$ac_given_srcdir/$ac_dir/POTFILES.in" | sed -e "/^#/d" -e "/^[ ]*\$/d" -e "s,.*, $top_srcdir/& \\\\," | sed -e "\$s/\(.*\) \\\\/\1/" > "$ac_dir/POTFILES"
113 | POMAKEFILEDEPS="POTFILES.in"
114 | # ALL_LINGUAS, POFILES, GMOFILES, UPDATEPOFILES, DUMMYPOFILES depend
115 | # on $ac_dir but don't depend on user-specified configuration
116 | # parameters.
117 | if test -f "$ac_given_srcdir/$ac_dir/LINGUAS"; then
118 | # The LINGUAS file contains the set of available languages.
119 | if test -n "$OBSOLETE_ALL_LINGUAS"; then
120 | test -n "$as_me" && echo "$as_me: setting ALL_LINGUAS in configure.in is obsolete" || echo "setting ALL_LINGUAS in configure.in is obsolete"
121 | fi
122 | ALL_LINGUAS_=`sed -e "/^#/d" "$ac_given_srcdir/$ac_dir/LINGUAS"`
123 | # Hide the ALL_LINGUAS assigment from automake.
124 | eval 'ALL_LINGUAS''=$ALL_LINGUAS_'
125 | POMAKEFILEDEPS="$POMAKEFILEDEPS LINGUAS"
126 | else
127 | # The set of available languages was given in configure.in.
128 | eval 'ALL_LINGUAS''=$OBSOLETE_ALL_LINGUAS'
129 | fi
130 | case "$ac_given_srcdir" in
131 | .) srcdirpre= ;;
132 | *) srcdirpre='$(srcdir)/' ;;
133 | esac
134 | POFILES=
135 | GMOFILES=
136 | UPDATEPOFILES=
137 | DUMMYPOFILES=
138 | for lang in $ALL_LINGUAS; do
139 | POFILES="$POFILES $srcdirpre$lang.po"
140 | GMOFILES="$GMOFILES $srcdirpre$lang.gmo"
141 | UPDATEPOFILES="$UPDATEPOFILES $lang.po-update"
142 | DUMMYPOFILES="$DUMMYPOFILES $lang.nop"
143 | done
144 | # CATALOGS depends on both $ac_dir and the user's LINGUAS
145 | # environment variable.
146 | INST_LINGUAS=
147 | if test -n "$ALL_LINGUAS"; then
148 | for presentlang in $ALL_LINGUAS; do
149 | useit=no
150 | if test "%UNSET%" != "$LINGUAS"; then
151 | desiredlanguages="$LINGUAS"
152 | else
153 | desiredlanguages="$ALL_LINGUAS"
154 | fi
155 | for desiredlang in $desiredlanguages; do
156 | # Use the presentlang catalog if desiredlang is
157 | # a. equal to presentlang, or
158 | # b. a variant of presentlang (because in this case,
159 | # presentlang can be used as a fallback for messages
160 | # which are not translated in the desiredlang catalog).
161 | case "$desiredlang" in
162 | "$presentlang"*) useit=yes;;
163 | esac
164 | done
165 | if test $useit = yes; then
166 | INST_LINGUAS="$INST_LINGUAS $presentlang"
167 | fi
168 | done
169 | fi
170 | CATALOGS=
171 | if test -n "$INST_LINGUAS"; then
172 | for lang in $INST_LINGUAS; do
173 | CATALOGS="$CATALOGS $lang.gmo"
174 | done
175 | fi
176 | test -n "$as_me" && echo "$as_me: creating $ac_dir/Makefile" || echo "creating $ac_dir/Makefile"
177 | sed -e "/^POTFILES =/r $ac_dir/POTFILES" -e "/^# Makevars/r $ac_given_srcdir/$ac_dir/Makevars" -e "s|@POFILES@|$POFILES|g" -e "s|@GMOFILES@|$GMOFILES|g" -e "s|@UPDATEPOFILES@|$UPDATEPOFILES|g" -e "s|@DUMMYPOFILES@|$DUMMYPOFILES|g" -e "s|@CATALOGS@|$CATALOGS|g" -e "s|@POMAKEFILEDEPS@|$POMAKEFILEDEPS|g" "$ac_dir/Makefile.in" > "$ac_dir/Makefile"
178 | for f in "$ac_given_srcdir/$ac_dir"/Rules-*; do
179 | if test -f "$f"; then
180 | case "$f" in
181 | *.orig | *.bak | *~) ;;
182 | *) cat "$f" >> "$ac_dir/Makefile" ;;
183 | esac
184 | fi
185 | done
186 | fi
187 | ;;
188 | esac
189 | done],
190 | [# Capture the value of obsolete ALL_LINGUAS because we need it to compute
191 | # POFILES, GMOFILES, UPDATEPOFILES, DUMMYPOFILES, CATALOGS. But hide it
192 | # from automake.
193 | eval 'OBSOLETE_ALL_LINGUAS''="$ALL_LINGUAS"'
194 | # Capture the value of LINGUAS because we need it to compute CATALOGS.
195 | LINGUAS="${LINGUAS-%UNSET%}"
196 | ])
197 | ])
198 |
--------------------------------------------------------------------------------
/m4/gpg-error.m4:
--------------------------------------------------------------------------------
1 | # gpg-error.m4 - autoconf macro to detect libgpg-error.
2 | # Copyright (C) 2002, 2003, 2004, 2011, 2014, 2018, 2020, 2021, 2022, 2024
3 | # g10 Code GmbH
4 | #
5 | # This file is free software; as a special exception the author gives
6 | # unlimited permission to copy and/or distribute it, with or without
7 | # modifications, as long as this notice is preserved.
8 | #
9 | # This file is distributed in the hope that it will be useful, but
10 | # WITHOUT ANY WARRANTY, to the extent permitted by law; without even the
11 | # implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
12 | #
13 | # Last-changed: 2024-06-13
14 |
15 | dnl
16 | dnl Find gpg-error-config, for backward compatibility
17 | dnl
18 | dnl _AM_PATH_POSSIBLE_GPG_ERROR_CONFIG
19 | AC_DEFUN([_AM_PATH_POSSIBLE_GPG_ERROR_CONFIG],[dnl
20 | gpg_error_config_prefix=""
21 | dnl --with-libgpg-error-prefix=PFX is the preferred name for this option,
22 | dnl since that is consistent with how our three siblings use the directory/
23 | dnl package name in --with-$dir_name-prefix=PFX.
24 | AC_ARG_WITH(libgpg-error-prefix,
25 | AS_HELP_STRING([--with-libgpg-error-prefix=PFX],
26 | [prefix where GPG Error is installed (optional)]),
27 | [gpg_error_config_prefix="$withval"])
28 |
29 | dnl Accept --with-gpg-error-prefix and make it work the same as
30 | dnl --with-libgpg-error-prefix above, for backwards compatibility,
31 | dnl but do not document this old, inconsistently-named option.
32 | AC_ARG_WITH(gpg-error-prefix,,
33 | [gpg_error_config_prefix="$withval"])
34 |
35 | if test x"${GPG_ERROR_CONFIG}" = x ; then
36 | if test x"${gpg_error_config_prefix}" != x ; then
37 | GPG_ERROR_CONFIG="${gpg_error_config_prefix}/bin/gpg-error-config"
38 | else
39 | case "${SYSROOT}" in
40 | /*)
41 | if test -x "${SYSROOT}/bin/gpg-error-config" ; then
42 | GPG_ERROR_CONFIG="${SYSROOT}/bin/gpg-error-config"
43 | fi
44 | ;;
45 | '')
46 | ;;
47 | *)
48 | AC_MSG_WARN([Ignoring \$SYSROOT as it is not an absolute path.])
49 | ;;
50 | esac
51 | fi
52 | fi
53 |
54 | AC_PATH_PROG(GPG_ERROR_CONFIG, gpg-error-config, no)
55 | ])
56 |
57 | dnl
58 | dnl Find gpgrt-config, which uses .pc file
59 | dnl (minimum pkg-config functionality, supporting cross build)
60 | dnl
61 | dnl _AM_PATH_GPGRT_CONFIG
62 | AC_DEFUN([_AM_PATH_GPGRT_CONFIG],[dnl
63 | AC_PATH_PROG(GPGRT_CONFIG, gpgrt-config, no, [$prefix/bin:$PATH])
64 | if test "$GPGRT_CONFIG" != "no"; then
65 | # Determine gpgrt_libdir
66 | #
67 | # Get the prefix of gpgrt-config assuming it's something like:
68 | # /bin/gpgrt-config
69 | gpgrt_prefix=${GPGRT_CONFIG%/*/*}
70 | possible_libdir1=${gpgrt_prefix}/lib
71 | # Determine by using system libdir-format with CC, it's like:
72 | # Normal style: /usr/lib
73 | # GNU cross style: /usr//lib
74 | # Debian style: /usr/lib/
75 | # Fedora/openSUSE style: /usr/lib, /usr/lib32 or /usr/lib64
76 | # It is assumed that CC is specified to the one of host on cross build.
77 | if libdir_candidates=$(${CC:-cc} -print-search-dirs | \
78 | sed -n -e "/^libraries/{s/libraries: =//;s/:/\\
79 | /g;p;}"); then
80 | # From the output of -print-search-dirs, select valid pkgconfig dirs.
81 | libdir_candidates=$(for dir in $libdir_candidates; do
82 | if p=$(cd $dir 2>/dev/null && pwd); then
83 | test -d "$p/pkgconfig" && echo $p;
84 | fi
85 | done)
86 |
87 | for possible_libdir0 in $libdir_candidates; do
88 | # possible_libdir0:
89 | # Fallback candidate, the one of system-installed (by $CC)
90 | # (/usr//lib, /usr/lib/ or /usr/lib32)
91 | # possible_libdir1:
92 | # Another candidate, user-locally-installed
93 | # (/lib)
94 | # possible_libdir2
95 | # Most preferred
96 | # (//lib,
97 | # /lib/ or /lib32)
98 | if test "${possible_libdir0##*/}" = "lib"; then
99 | possible_prefix0=${possible_libdir0%/lib}
100 | possible_prefix0_triplet=${possible_prefix0##*/}
101 | if test -z "$possible_prefix0_triplet"; then
102 | continue
103 | fi
104 | possible_libdir2=${gpgrt_prefix}/$possible_prefix0_triplet/lib
105 | else
106 | possible_prefix0=${possible_libdir0%%/lib*}
107 | possible_libdir2=${gpgrt_prefix}${possible_libdir0#$possible_prefix0}
108 | fi
109 | if test -f ${possible_libdir2}/pkgconfig/gpg-error.pc; then
110 | gpgrt_libdir=${possible_libdir2}
111 | elif test -f ${possible_libdir1}/pkgconfig/gpg-error.pc; then
112 | gpgrt_libdir=${possible_libdir1}
113 | elif test -f ${possible_libdir0}/pkgconfig/gpg-error.pc; then
114 | gpgrt_libdir=${possible_libdir0}
115 | fi
116 | if test -n "$gpgrt_libdir"; then break; fi
117 | done
118 | fi
119 | if test -z "$gpgrt_libdir"; then
120 | # No valid pkgconfig dir in any of the system directories, fallback
121 | gpgrt_libdir=${possible_libdir1}
122 | fi
123 | else
124 | unset GPGRT_CONFIG
125 | fi
126 |
127 | if test -n "$gpgrt_libdir"; then
128 | # Add the --libdir option to GPGRT_CONFIG
129 | GPGRT_CONFIG="$GPGRT_CONFIG --libdir=$gpgrt_libdir"
130 | # Make sure if gpgrt-config really works, by testing config gpg-error
131 | if ! $GPGRT_CONFIG gpg-error --exists; then
132 | # If it doesn't work, clear the GPGRT_CONFIG variable.
133 | unset GPGRT_CONFIG
134 | fi
135 | else
136 | # GPGRT_CONFIG found but no suitable dir for --libdir found.
137 | # This is a failure. Clear the GPGRT_CONFIG variable.
138 | unset GPGRT_CONFIG
139 | fi
140 | ])
141 |
142 | dnl AM_PATH_GPG_ERROR([MINIMUM-VERSION,
143 | dnl [ACTION-IF-FOUND [, ACTION-IF-NOT-FOUND ]]])
144 | dnl
145 | dnl Test for libgpg-error and define GPG_ERROR_CFLAGS, GPG_ERROR_LIBS,
146 | dnl GPG_ERROR_MT_CFLAGS, and GPG_ERROR_MT_LIBS. The _MT_ variants are
147 | dnl used for programs requiring real multi thread support.
148 | dnl
149 | dnl If a prefix option is not used, the config script is first
150 | dnl searched in $SYSROOT/bin and then along $PATH. If the used
151 | dnl config script does not match the host specification the script
152 | dnl is added to the gpg_config_script_warn variable.
153 | dnl
154 | AC_DEFUN([AM_PATH_GPG_ERROR],
155 | [ AC_REQUIRE([AC_CANONICAL_HOST])dnl
156 | AC_REQUIRE([_AM_PATH_POSSIBLE_GPG_ERROR_CONFIG])dnl
157 | AC_REQUIRE([_AM_PATH_GPGRT_CONFIG])dnl
158 | if test x"$GPGRT_CONFIG" != x -a "$GPGRT_CONFIG" != "no"; then
159 | GPG_ERROR_CONFIG="$GPGRT_CONFIG gpg-error"
160 | AC_MSG_NOTICE([Use gpgrt-config with $gpgrt_libdir as gpg-error-config])
161 | gpg_error_config_version=`$GPG_ERROR_CONFIG --modversion`
162 | elif test x"$GPG_ERROR_CONFIG" != x -a "$GPG_ERROR_CONFIG" != "no"; then
163 | gpg_error_config_version=`$GPG_ERROR_CONFIG --version`
164 | else
165 | gpg_error_config_version="0.0"
166 | fi
167 |
168 | min_gpg_error_version=ifelse([$1], ,1.33,$1)
169 | ok=no
170 | if test "$GPG_ERROR_CONFIG" != "no"; then
171 | req_major=`echo $min_gpg_error_version | \
172 | sed 's/\([[0-9]]*\)\.\([[0-9]]*\)/\1/'`
173 | req_minor=`echo $min_gpg_error_version | \
174 | sed 's/\([[0-9]]*\)\.\([[0-9]]*\)/\2/'`
175 | major=`echo $gpg_error_config_version | \
176 | sed 's/\([[0-9]]*\)\.\([[0-9]]*\).*/\1/'`
177 | minor=`echo $gpg_error_config_version | \
178 | sed 's/\([[0-9]]*\)\.\([[0-9]]*\).*/\2/'`
179 | if test "$major" -gt "$req_major"; then
180 | ok=yes
181 | else
182 | if test "$major" -eq "$req_major"; then
183 | if test "$minor" -ge "$req_minor"; then
184 | ok=yes
185 | fi
186 | fi
187 | fi
188 | fi
189 | AC_MSG_CHECKING(for GPG Error - version >= $min_gpg_error_version)
190 | if test $ok = yes; then
191 | GPG_ERROR_CFLAGS=`$GPG_ERROR_CONFIG --cflags`
192 | GPG_ERROR_LIBS=`$GPG_ERROR_CONFIG --libs`
193 | if test -z "$GPGRT_CONFIG"; then
194 | GPG_ERROR_MT_CFLAGS=`$GPG_ERROR_CONFIG --mt --cflags 2>/dev/null`
195 | GPG_ERROR_MT_LIBS=`$GPG_ERROR_CONFIG --mt --libs 2>/dev/null`
196 | else
197 | GPG_ERROR_MT_CFLAGS=`$GPG_ERROR_CONFIG --variable=mtcflags 2>/dev/null`
198 | GPG_ERROR_MT_CFLAGS="$GPG_ERROR_CFLAGS${GPG_ERROR_CFLAGS:+ }$GPG_ERROR_MT_CFLAGS"
199 | GPG_ERROR_MT_LIBS=`$GPG_ERROR_CONFIG --variable=mtlibs 2>/dev/null`
200 | GPG_ERROR_MT_LIBS="$GPG_ERROR_LIBS${GPG_ERROR_LIBS:+ }$GPG_ERROR_MT_LIBS"
201 | fi
202 | AC_MSG_RESULT([yes ($gpg_error_config_version)])
203 | ifelse([$2], , :, [$2])
204 | if test -z "$GPGRT_CONFIG"; then
205 | gpg_error_config_host=`$GPG_ERROR_CONFIG --host 2>/dev/null || echo none`
206 | else
207 | gpg_error_config_host=`$GPG_ERROR_CONFIG --variable=host 2>/dev/null || echo none`
208 | fi
209 | if test x"$gpg_error_config_host" != xnone ; then
210 | if test x"$gpg_error_config_host" != x"$host" ; then
211 | AC_MSG_WARN([[
212 | ***
213 | *** The config script "$GPG_ERROR_CONFIG" was
214 | *** built for $gpg_error_config_host and thus may not match the
215 | *** used host $host.
216 | *** You may want to use the configure option --with-libgpg-error-prefix
217 | *** to specify a matching config script or use \$SYSROOT.
218 | ***]])
219 | gpg_config_script_warn="$gpg_config_script_warn libgpg-error"
220 | fi
221 | fi
222 | else
223 | GPG_ERROR_CFLAGS=""
224 | GPG_ERROR_LIBS=""
225 | GPG_ERROR_MT_CFLAGS=""
226 | GPG_ERROR_MT_LIBS=""
227 | AC_MSG_RESULT(no)
228 | ifelse([$3], , :, [$3])
229 | fi
230 | AC_SUBST(GPG_ERROR_CFLAGS)
231 | AC_SUBST(GPG_ERROR_LIBS)
232 | AC_SUBST(GPG_ERROR_MT_CFLAGS)
233 | AC_SUBST(GPG_ERROR_MT_LIBS)
234 | ])
235 |
--------------------------------------------------------------------------------
/INSTALL:
--------------------------------------------------------------------------------
1 | Installation Instructions
2 | *************************
3 |
4 | Copyright (C) 1994, 1995, 1996, 1999, 2000, 2001, 2002, 2004 Free
5 | Software Foundation, Inc.
6 |
7 | This file is free documentation; the Free Software Foundation gives
8 | unlimited permission to copy, distribute and modify it.
9 |
10 | Basic Installation
11 | ==================
12 |
13 | These are generic installation instructions.
14 |
15 | The `configure' shell script attempts to guess correct values for
16 | various system-dependent variables used during compilation. It uses
17 | those values to create a `Makefile' in each directory of the package.
18 | It may also create one or more `.h' files containing system-dependent
19 | definitions. Finally, it creates a shell script `config.status' that
20 | you can run in the future to recreate the current configuration, and a
21 | file `config.log' containing compiler output (useful mainly for
22 | debugging `configure').
23 |
24 | It can also use an optional file (typically called `config.cache'
25 | and enabled with `--cache-file=config.cache' or simply `-C') that saves
26 | the results of its tests to speed up reconfiguring. (Caching is
27 | disabled by default to prevent problems with accidental use of stale
28 | cache files.)
29 |
30 | If you need to do unusual things to compile the package, please try
31 | to figure out how `configure' could check whether to do them, and mail
32 | diffs or instructions to the address given in the `README' so they can
33 | be considered for the next release. If you are using the cache, and at
34 | some point `config.cache' contains results you don't want to keep, you
35 | may remove or edit it.
36 |
37 | The file `configure.ac' (or `configure.in') is used to create
38 | `configure' by a program called `autoconf'. You only need
39 | `configure.ac' if you want to change it or regenerate `configure' using
40 | a newer version of `autoconf'.
41 |
42 | The simplest way to compile this package is:
43 |
44 | 1. `cd' to the directory containing the package's source code and type
45 | `./configure' to configure the package for your system. If you're
46 | using `csh' on an old version of System V, you might need to type
47 | `sh ./configure' instead to prevent `csh' from trying to execute
48 | `configure' itself.
49 |
50 | Running `configure' takes awhile. While running, it prints some
51 | messages telling which features it is checking for.
52 |
53 | 2. Type `make' to compile the package.
54 |
55 | 3. Optionally, type `make check' to run any self-tests that come with
56 | the package.
57 |
58 | 4. Type `make install' to install the programs and any data files and
59 | documentation.
60 |
61 | 5. You can remove the program binaries and object files from the
62 | source code directory by typing `make clean'. To also remove the
63 | files that `configure' created (so you can compile the package for
64 | a different kind of computer), type `make distclean'. There is
65 | also a `make maintainer-clean' target, but that is intended mainly
66 | for the package's developers. If you use it, you may have to get
67 | all sorts of other programs in order to regenerate files that came
68 | with the distribution.
69 |
70 | Compilers and Options
71 | =====================
72 |
73 | Some systems require unusual options for compilation or linking that the
74 | `configure' script does not know about. Run `./configure --help' for
75 | details on some of the pertinent environment variables.
76 |
77 | You can give `configure' initial values for configuration parameters
78 | by setting variables in the command line or in the environment. Here
79 | is an example:
80 |
81 | ./configure CC=c89 CFLAGS=-O2 LIBS=-lposix
82 |
83 | *Note Defining Variables::, for more details.
84 |
85 | Compiling For Multiple Architectures
86 | ====================================
87 |
88 | You can compile the package for more than one kind of computer at the
89 | same time, by placing the object files for each architecture in their
90 | own directory. To do this, you must use a version of `make' that
91 | supports the `VPATH' variable, such as GNU `make'. `cd' to the
92 | directory where you want the object files and executables to go and run
93 | the `configure' script. `configure' automatically checks for the
94 | source code in the directory that `configure' is in and in `..'.
95 |
96 | If you have to use a `make' that does not support the `VPATH'
97 | variable, you have to compile the package for one architecture at a
98 | time in the source code directory. After you have installed the
99 | package for one architecture, use `make distclean' before reconfiguring
100 | for another architecture.
101 |
102 | Installation Names
103 | ==================
104 |
105 | By default, `make install' will install the package's files in
106 | `/usr/local/bin', `/usr/local/man', etc. You can specify an
107 | installation prefix other than `/usr/local' by giving `configure' the
108 | option `--prefix=PREFIX'.
109 |
110 | You can specify separate installation prefixes for
111 | architecture-specific files and architecture-independent files. If you
112 | give `configure' the option `--exec-prefix=PREFIX', the package will
113 | use PREFIX as the prefix for installing programs and libraries.
114 | Documentation and other data files will still use the regular prefix.
115 |
116 | In addition, if you use an unusual directory layout you can give
117 | options like `--bindir=DIR' to specify different values for particular
118 | kinds of files. Run `configure --help' for a list of the directories
119 | you can set and what kinds of files go in them.
120 |
121 | If the package supports it, you can cause programs to be installed
122 | with an extra prefix or suffix on their names by giving `configure' the
123 | option `--program-prefix=PREFIX' or `--program-suffix=SUFFIX'.
124 |
125 | Optional Features
126 | =================
127 |
128 | Some packages pay attention to `--enable-FEATURE' options to
129 | `configure', where FEATURE indicates an optional part of the package.
130 | They may also pay attention to `--with-PACKAGE' options, where PACKAGE
131 | is something like `gnu-as' or `x' (for the X Window System). The
132 | `README' should mention any `--enable-' and `--with-' options that the
133 | package recognizes.
134 |
135 | For packages that use the X Window System, `configure' can usually
136 | find the X include and library files automatically, but if it doesn't,
137 | you can use the `configure' options `--x-includes=DIR' and
138 | `--x-libraries=DIR' to specify their locations.
139 |
140 | Specifying the System Type
141 | ==========================
142 |
143 | There may be some features `configure' cannot figure out automatically,
144 | but needs to determine by the type of machine the package will run on.
145 | Usually, assuming the package is built to be run on the _same_
146 | architectures, `configure' can figure that out, but if it prints a
147 | message saying it cannot guess the machine type, give it the
148 | `--build=TYPE' option. TYPE can either be a short name for the system
149 | type, such as `sun4', or a canonical name which has the form:
150 |
151 | CPU-COMPANY-SYSTEM
152 |
153 | where SYSTEM can have one of these forms:
154 |
155 | OS KERNEL-OS
156 |
157 | See the file `config.sub' for the possible values of each field. If
158 | `config.sub' isn't included in this package, then this package doesn't
159 | need to know the machine type.
160 |
161 | If you are _building_ compiler tools for cross-compiling, you should
162 | use the `--target=TYPE' option to select the type of system they will
163 | produce code for.
164 |
165 | If you want to _use_ a cross compiler, that generates code for a
166 | platform different from the build platform, you should specify the
167 | "host" platform (i.e., that on which the generated programs will
168 | eventually be run) with `--host=TYPE'.
169 |
170 | Sharing Defaults
171 | ================
172 |
173 | If you want to set default values for `configure' scripts to share, you
174 | can create a site shell script called `config.site' that gives default
175 | values for variables like `CC', `cache_file', and `prefix'.
176 | `configure' looks for `PREFIX/share/config.site' if it exists, then
177 | `PREFIX/etc/config.site' if it exists. Or, you can set the
178 | `CONFIG_SITE' environment variable to the location of the site script.
179 | A warning: not all `configure' scripts look for a site script.
180 |
181 | Defining Variables
182 | ==================
183 |
184 | Variables not defined in a site shell script can be set in the
185 | environment passed to `configure'. However, some packages may run
186 | configure again during the build, and the customized values of these
187 | variables may be lost. In order to avoid this problem, you should set
188 | them in the `configure' command line, using `VAR=value'. For example:
189 |
190 | ./configure CC=/usr/local2/bin/gcc
191 |
192 | will cause the specified gcc to be used as the C compiler (unless it is
193 | overridden in the site shell script).
194 |
195 | `configure' Invocation
196 | ======================
197 |
198 | `configure' recognizes the following options to control how it operates.
199 |
200 | `--help'
201 | `-h'
202 | Print a summary of the options to `configure', and exit.
203 |
204 | `--version'
205 | `-V'
206 | Print the version of Autoconf used to generate the `configure'
207 | script, and exit.
208 |
209 | `--cache-file=FILE'
210 | Enable the cache: use and save the results of the tests in FILE,
211 | traditionally `config.cache'. FILE defaults to `/dev/null' to
212 | disable caching.
213 |
214 | `--config-cache'
215 | `-C'
216 | Alias for `--cache-file=config.cache'.
217 |
218 | `--quiet'
219 | `--silent'
220 | `-q'
221 | Do not print messages saying which checks are being made. To
222 | suppress all normal output, redirect it to `/dev/null' (any error
223 | messages will still be shown).
224 |
225 | `--srcdir=DIR'
226 | Look for the package's source code in directory DIR. Usually
227 | `configure' can determine that directory automatically.
228 |
229 | `configure' also accepts some other, not widely useful, options. Run
230 | `configure --help' for more details.
231 |
232 |
--------------------------------------------------------------------------------
/m4/libassuan.m4:
--------------------------------------------------------------------------------
1 | dnl Autoconf macros for libassuan
2 | dnl Copyright (C) 2002, 2003, 2011 Free Software Foundation, Inc.
3 | dnl
4 | dnl This file is free software; as a special exception the author gives
5 | dnl unlimited permission to copy and/or distribute it, with or without
6 | dnl modifications, as long as this notice is preserved.
7 | dnl
8 | dnl This file is distributed in the hope that it will be useful, but
9 | dnl WITHOUT ANY WARRANTY, to the extent permitted by law; without even the
10 | dnl implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
11 | dnl SPDX-License-Identifier: FSFULLR
12 | # Last-changed: 2024-06-13
13 |
14 | dnl
15 | dnl Find gpgrt-config, which uses .pc file
16 | dnl (minimum pkg-config functionality, supporting cross build)
17 | dnl
18 | dnl _AM_PATH_GPGRT_CONFIG
19 | AC_DEFUN([_AM_PATH_GPGRT_CONFIG],[dnl
20 | AC_PATH_PROG(GPGRT_CONFIG, gpgrt-config, no, [$prefix/bin:$PATH])
21 | if test "$GPGRT_CONFIG" != "no"; then
22 | # Determine gpgrt_libdir
23 | #
24 | # Get the prefix of gpgrt-config assuming it's something like:
25 | # /bin/gpgrt-config
26 | gpgrt_prefix=${GPGRT_CONFIG%/*/*}
27 | possible_libdir1=${gpgrt_prefix}/lib
28 | # Determine by using system libdir-format with CC, it's like:
29 | # Normal style: /usr/lib
30 | # GNU cross style: /usr//lib
31 | # Debian style: /usr/lib/
32 | # Fedora/openSUSE style: /usr/lib, /usr/lib32 or /usr/lib64
33 | # It is assumed that CC is specified to the one of host on cross build.
34 | if libdir_candidates=$(${CC:-cc} -print-search-dirs | \
35 | sed -n -e "/^libraries/{s/libraries: =//;s/:/\\
36 | /g;p;}"); then
37 | # From the output of -print-search-dirs, select valid pkgconfig dirs.
38 | libdir_candidates=$(for dir in $libdir_candidates; do
39 | if p=$(cd $dir 2>/dev/null && pwd); then
40 | test -d "$p/pkgconfig" && echo $p;
41 | fi
42 | done)
43 |
44 | for possible_libdir0 in $libdir_candidates; do
45 | # possible_libdir0:
46 | # Fallback candidate, the one of system-installed (by $CC)
47 | # (/usr//lib, /usr/lib/ or /usr/lib32)
48 | # possible_libdir1:
49 | # Another candidate, user-locally-installed
50 | # (/lib)
51 | # possible_libdir2
52 | # Most preferred
53 | # (//lib,
54 | # /lib/ or /lib32)
55 | if test "${possible_libdir0##*/}" = "lib"; then
56 | possible_prefix0=${possible_libdir0%/lib}
57 | possible_prefix0_triplet=${possible_prefix0##*/}
58 | if test -z "$possible_prefix0_triplet"; then
59 | continue
60 | fi
61 | possible_libdir2=${gpgrt_prefix}/$possible_prefix0_triplet/lib
62 | else
63 | possible_prefix0=${possible_libdir0%%/lib*}
64 | possible_libdir2=${gpgrt_prefix}${possible_libdir0#$possible_prefix0}
65 | fi
66 | if test -f ${possible_libdir2}/pkgconfig/gpg-error.pc; then
67 | gpgrt_libdir=${possible_libdir2}
68 | elif test -f ${possible_libdir1}/pkgconfig/gpg-error.pc; then
69 | gpgrt_libdir=${possible_libdir1}
70 | elif test -f ${possible_libdir0}/pkgconfig/gpg-error.pc; then
71 | gpgrt_libdir=${possible_libdir0}
72 | fi
73 | if test -n "$gpgrt_libdir"; then break; fi
74 | done
75 | fi
76 | if test -z "$gpgrt_libdir"; then
77 | # No valid pkgconfig dir in any of the system directories, fallback
78 | gpgrt_libdir=${possible_libdir1}
79 | fi
80 | else
81 | unset GPGRT_CONFIG
82 | fi
83 |
84 | if test -n "$gpgrt_libdir"; then
85 | # Add the --libdir option to GPGRT_CONFIG
86 | GPGRT_CONFIG="$GPGRT_CONFIG --libdir=$gpgrt_libdir"
87 | # Make sure if gpgrt-config really works, by testing config gpg-error
88 | if ! $GPGRT_CONFIG gpg-error --exists; then
89 | # If it doesn't work, clear the GPGRT_CONFIG variable.
90 | unset GPGRT_CONFIG
91 | fi
92 | else
93 | # GPGRT_CONFIG found but no suitable dir for --libdir found.
94 | # This is a failure. Clear the GPGRT_CONFIG variable.
95 | unset GPGRT_CONFIG
96 | fi
97 | ])
98 |
99 | dnl
100 | dnl Common code used for libassuan detection [internal]
101 | dnl Returns ok set to yes or no.
102 | dnl
103 | AC_DEFUN([_AM_PATH_LIBASSUAN_COMMON],
104 | [ AC_REQUIRE([AC_CANONICAL_HOST])dnl
105 | AC_REQUIRE([_AM_PATH_GPGRT_CONFIG])dnl
106 | AC_ARG_WITH(libassuan-prefix,
107 | AS_HELP_STRING([--with-libassuan-prefix=PFX],
108 | [prefix where LIBASSUAN is installed (optional)]),
109 | libassuan_config_prefix="$withval", libassuan_config_prefix="")
110 | if test x$libassuan_config_prefix != x ; then
111 | if test x${LIBASSUAN_CONFIG+set} != xset ; then
112 | LIBASSUAN_CONFIG=$libassuan_config_prefix/bin/libassuan-config
113 | fi
114 | fi
115 |
116 | use_gpgrt_config=""
117 | if test x"$GPGRT_CONFIG" != x -a "$GPGRT_CONFIG" != "no"; then
118 | if $GPGRT_CONFIG libassuan --exists; then
119 | LIBASSUAN_CONFIG="$GPGRT_CONFIG libassuan"
120 | AC_MSG_NOTICE([Use gpgrt-config as libassuan-config])
121 | use_gpgrt_config=yes
122 | fi
123 | fi
124 | if test -z "$use_gpgrt_config"; then
125 | AC_PATH_PROG(LIBASSUAN_CONFIG, libassuan-config, no)
126 | fi
127 |
128 | tmp=ifelse([$1], ,1:0.9.2,$1)
129 | if echo "$tmp" | grep ':' >/dev/null 2>/dev/null ; then
130 | req_libassuan_api=`echo "$tmp" | sed 's/\(.*\):\(.*\)/\1/'`
131 | min_libassuan_version=`echo "$tmp" | sed 's/\(.*\):\(.*\)/\2/'`
132 | else
133 | req_libassuan_api=0
134 | min_libassuan_version="$tmp"
135 | fi
136 |
137 | AC_MSG_CHECKING(for LIBASSUAN - version >= $min_libassuan_version)
138 | ok=no
139 | if test "$LIBASSUAN_CONFIG" != "no"; then
140 | req_major=`echo $min_libassuan_version | \
141 | sed 's/\([[0-9]]*\)\.\([[0-9]]*\)\.\([[0-9]]*\)/\1/'`
142 | req_minor=`echo $min_libassuan_version | \
143 | sed 's/\([[0-9]]*\)\.\([[0-9]]*\)\.\([[0-9]]*\)/\2/'`
144 | req_micro=`echo $min_libassuan_version | \
145 | sed 's/\([[0-9]]*\)\.\([[0-9]]*\)\.\([[0-9]]*\)/\3/'`
146 |
147 | if test -z "$use_gpgrt_config"; then
148 | libassuan_config_version=`$LIBASSUAN_CONFIG --version`
149 | else
150 | libassuan_config_version=`$LIBASSUAN_CONFIG --modversion`
151 | fi
152 | major=`echo $libassuan_config_version | \
153 | sed 's/\([[0-9]]*\)\.\([[0-9]]*\)\.\([[0-9]]*\).*/\1/'`
154 | minor=`echo $libassuan_config_version | \
155 | sed 's/\([[0-9]]*\)\.\([[0-9]]*\)\.\([[0-9]]*\).*/\2/'`
156 | micro=`echo $libassuan_config_version | \
157 | sed 's/\([[0-9]]*\)\.\([[0-9]]*\)\.\([[0-9]]*\).*/\3/'`
158 |
159 | if test "$major" -gt "$req_major"; then
160 | ok=yes
161 | else
162 | if test "$major" -eq "$req_major"; then
163 | if test "$minor" -gt "$req_minor"; then
164 | ok=yes
165 | else
166 | if test "$minor" -eq "$req_minor"; then
167 | if test "$micro" -ge "$req_micro"; then
168 | ok=yes
169 | fi
170 | fi
171 | fi
172 | fi
173 | fi
174 | fi
175 |
176 | if test $ok = yes; then
177 | AC_MSG_RESULT([yes ($libassuan_config_version)])
178 | AC_DEFINE(LIBASSUAN_API_REQUESTED, $req_libassuan_api, Requested API version for libassuan)
179 | else
180 | AC_MSG_RESULT(no)
181 | fi
182 |
183 | if test $ok = yes; then
184 | if test "$req_libassuan_api" -gt 0 ; then
185 | if test -z "$use_gpgrt_config"; then
186 | tmp=`$LIBASSUAN_CONFIG --api-version 2>/dev/null || echo 0`
187 | else
188 | tmp=`$LIBASSUAN_CONFIG --variable=api_version 2>/dev/null || echo 0`
189 | fi
190 | if test "$tmp" -gt 0 ; then
191 | AC_MSG_CHECKING([LIBASSUAN API version])
192 | if test "$req_libassuan_api" -eq "$tmp" ; then
193 | AC_MSG_RESULT(okay)
194 | elif test "$req_libassuan_api" -eq 2 -a "$tmp" -eq 3; then
195 | AC_MSG_RESULT(okay)
196 | else
197 | ok=no
198 | AC_MSG_RESULT([does not match. want=$req_libassuan_api got=$tmp.])
199 | fi
200 | fi
201 | fi
202 | fi
203 |
204 | if test $ok = yes; then
205 | if test x"$host" != x ; then
206 | if test -z "$use_gpgrt_config"; then
207 | libassuan_config_host=`$LIBASSUAN_CONFIG --host 2>/dev/null || echo none`
208 | else
209 | libassuan_config_host=`$LIBASSUAN_CONFIG --variable=host 2>/dev/null || echo none`
210 | fi
211 | if test x"$libassuan_config_host" != xnone ; then
212 | if test x"$libassuan_config_host" != x"$host" ; then
213 | AC_MSG_WARN([[
214 | ***
215 | *** The config script "$LIBASSUAN_CONFIG" was
216 | *** built for $libassuan_config_host and thus may not match the
217 | *** used host $host.
218 | *** You may want to use the configure option --with-libassuan-prefix
219 | *** to specify a matching config script.
220 | ***]])
221 | fi
222 | fi
223 | fi
224 | fi
225 | ])
226 |
227 | dnl AM_CHECK_LIBASSUAN([MINIMUM-VERSION,
228 | dnl [ACTION-IF-FOUND [, ACTION-IF-NOT-FOUND ]]])
229 | dnl Test whether libassuan has at least MINIMUM-VERSION. This is
230 | dnl used to test for features only available in newer versions.
231 | dnl
232 | AC_DEFUN([AM_CHECK_LIBASSUAN],
233 | [ _AM_PATH_LIBASSUAN_COMMON($1)
234 | if test $ok = yes; then
235 | ifelse([$2], , :, [$2])
236 | else
237 | ifelse([$3], , :, [$3])
238 | fi
239 | ])
240 |
241 |
242 |
243 |
244 | dnl AM_PATH_LIBASSUAN([MINIMUM-VERSION,
245 | dnl [ACTION-IF-FOUND [, ACTION-IF-NOT-FOUND ]]])
246 | dnl Test for libassuan and define LIBASSUAN_CFLAGS and LIBASSUAN_LIBS
247 | dnl
248 | AC_DEFUN([AM_PATH_LIBASSUAN],
249 | [ _AM_PATH_LIBASSUAN_COMMON($1)
250 | if test $ok = yes; then
251 | LIBASSUAN_CFLAGS=`$LIBASSUAN_CONFIG --cflags`
252 | LIBASSUAN_LIBS=`$LIBASSUAN_CONFIG --libs`
253 | ifelse([$2], , :, [$2])
254 | else
255 | LIBASSUAN_CFLAGS=""
256 | LIBASSUAN_LIBS=""
257 | ifelse([$3], , :, [$3])
258 | fi
259 | AC_SUBST(LIBASSUAN_CFLAGS)
260 | AC_SUBST(LIBASSUAN_LIBS)
261 | ])
262 |
--------------------------------------------------------------------------------
/configure.ac:
--------------------------------------------------------------------------------
1 | # configure.ac - for GpgEX
2 | # Copyright (C) 2005, 2006, 2007, 2013 g10 Code GmbH
3 | #
4 | # This file is free software; as a special exception the author gives
5 | # unlimited permission to copy and/or distribute it, with or without
6 | # modifications, as long as this notice is preserved.
7 | #
8 | # This program is distributed in the hope that it will be useful, but
9 | # WITHOUT ANY WARRANTY, to the extent permitted by law; without even the
10 | # implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
11 |
12 | # Process this file with autoconf to produce a configure script.
13 | AC_PREREQ(2.61)
14 | min_automake_version="1.10"
15 |
16 | # To build a release you need to create a tag with the version number
17 | # (git tag -s gnupg-2.n.m) and run "./autogen.sh --force". Please
18 | # bump the version number immediately *after* the release and do
19 | # another commit and push so that the git magic is able to work.
20 | m4_define([mym4_version], [1.1.1])
21 |
22 | # Below is m4 magic to extract and compute the git revision number,
23 | # the decimalized short revision number, a beta version string and a
24 | # flag indicating a development version (mym4_isgit). Note that the
25 | # m4 processing is done by autoconf and not during the configure run.
26 | m4_define([mym4_revision],
27 | m4_esyscmd([git rev-parse --short HEAD | tr -d '\n\r']))
28 | m4_define([mym4_revision_dec],
29 | m4_esyscmd_s([echo $((0x$(echo ]mym4_revision[|head -c 4)))]))
30 | m4_define([mym4_betastring],
31 | m4_esyscmd_s([git describe --match 'gpgex-[0-9].[0-9].*[0-9]' --long|\
32 | awk -F- '$3!=0{print"-beta"$3}']))
33 | m4_define([mym4_isgit],m4_if(mym4_betastring,[],[no],[yes]))
34 | m4_define([mym4_full_version],[mym4_version[]mym4_betastring])
35 |
36 | AC_INIT([gpgex],[mym4_full_version], [http://bugs.gnupg.org])
37 |
38 | NEED_GPG_ERROR_VERSION=1.58
39 |
40 | NEED_LIBASSUAN_API=2
41 | NEED_LIBASSUAN_VERSION=2.1.1
42 |
43 | PACKAGE=$PACKAGE_NAME
44 | PACKAGE_GT=${PACKAGE_NAME}
45 | VERSION=$PACKAGE_VERSION
46 |
47 | AC_CONFIG_AUX_DIR([build-aux])
48 | AC_CONFIG_SRCDIR(src/gpgex.def)
49 | AM_CONFIG_HEADER(config.h)
50 | AC_CANONICAL_TARGET
51 | AM_INIT_AUTOMAKE
52 |
53 | AC_GNU_SOURCE
54 |
55 | have_gpg_error=no
56 | have_libassuan=no
57 |
58 | AC_SUBST(PACKAGE)
59 | AC_SUBST(PACKAGE_GT)
60 | AC_SUBST(VERSION)
61 | AC_DEFINE_UNQUOTED(PACKAGE, "$PACKAGE", [Name of this package])
62 | AC_DEFINE_UNQUOTED(PACKAGE_GT, "$PACKAGE_GT",
63 | [Name of this package for gettext])
64 | AC_DEFINE_UNQUOTED(VERSION, "$VERSION", [Version of this package])
65 | AC_DEFINE_UNQUOTED(PACKAGE_BUGREPORT, "$PACKAGE_BUGREPORT",
66 | [Bug report address])
67 |
68 |
69 | AH_BOTTOM([
70 | /* Some global constants. */
71 |
72 | /* Force using of NLS for W32 even if no libintl has been found. This is
73 | okay because we have our own gettext implementation for W32. */
74 | #if defined(HAVE_W32_SYSTEM) && !defined(ENABLE_NLS)
75 | #define ENABLE_NLS 1
76 | #endif
77 | ])
78 |
79 | AM_MAINTAINER_MODE
80 | AM_SILENT_RULES
81 |
82 | # Checks for programs.
83 | AC_PROG_MAKE_SET
84 | AM_SANITY_CHECK
85 | missing_dir=`cd $ac_aux_dir && pwd`
86 | AM_MISSING_PROG(ACLOCAL, aclocal, $missing_dir)
87 | AM_MISSING_PROG(AUTOCONF, autoconf, $missing_dir)
88 | AM_MISSING_PROG(AUTOMAKE, automake, $missing_dir)
89 | AM_MISSING_PROG(AUTOHEADER, autoheader, $missing_dir)
90 | AM_MISSING_PROG(MAKEINFO, makeinfo, $missing_dir)
91 | AC_PROG_AWK
92 | AC_PROG_CC
93 | AC_PROG_CPP
94 | AC_PROG_CXX
95 | AC_PROG_INSTALL
96 | AC_PROG_LN_S
97 | AC_PROG_MAKE_SET
98 | AC_PROG_RANLIB
99 | AC_CHECK_TOOL(AR, ar, :)
100 | AC_CHECK_TOOL(DLLTOOL, dlltool, :)
101 | AC_CHECK_TOOL(WINDRES, windres, :)
102 |
103 |
104 | have_dosish_system=no
105 | have_w32_system=no
106 | have_w64_system=no
107 | case "${host}" in
108 | x86_64-*mingw32*)
109 | have_dosish_system=yes
110 | have_w32_system=yes
111 | have_w64_system=yes
112 | BUILD_CPU_ARCH=amd64
113 | ;;
114 | *-mingw32*)
115 | have_dosish_system=yes
116 | have_w32_system=yes
117 | BUILD_CPU_ARCH=x86
118 | ;;
119 | *)
120 | AC_MSG_ERROR([[
121 | ***
122 | *** This software my only be build for W32 systems. Use
123 | *** ./autogen.sh --build-w32
124 | *** or
125 | *** ./autogen.sh --build-w64
126 | *** to prepare it for such a build.
127 | ***]])
128 | ;;
129 | esac
130 |
131 | # We need the CPU architecture for the manifest file.
132 | AC_SUBST(BUILD_CPU_ARCH)
133 |
134 |
135 | AC_DEFINE(HAVE_DRIVE_LETTERS,1,
136 | [defined if we must run on a stupid file system])
137 |
138 | if test "$have_dosish_system" = yes; then
139 | AC_DEFINE(HAVE_DOSISH_SYSTEM,1,
140 | [Defined if we run on some of the PCDOS like systems
141 | (DOS, Windoze. OS/2) with special properties like
142 | no file modes])
143 | fi
144 | AM_CONDITIONAL(HAVE_DOSISH_SYSTEM, test "$have_dosish_system" = yes)
145 |
146 | if test "$have_w32_system" = yes; then
147 | AC_DEFINE(HAVE_W32_SYSTEM,1, [Defined if we run on a W32 API based system])
148 | if test "$have_w64_system" = yes; then
149 | AC_DEFINE(HAVE_W64_SYSTEM,1,
150 | [Defined if we run on a 64 bit W32 API based system])
151 | fi
152 | fi
153 | AM_CONDITIONAL(HAVE_W32_SYSTEM, test "$have_w32_system" = yes)
154 | AM_CONDITIONAL(HAVE_W64_SYSTEM, test "$have_w64_system" = yes)
155 |
156 | gpa_only=no
157 | AC_ARG_ENABLE(gpa-only,
158 | AC_HELP_STRING([--enable-gpa-only],
159 | [Try only GPA as UI-server]),
160 | gpa_only=$enableval)
161 | AC_MSG_RESULT($gpa_only)
162 | if test "$gpa_only" = yes ; then
163 | AC_DEFINE(ENABLE_GPA_ONLY, 1,
164 | [Define to use only GPA as UI-server])
165 | fi
166 |
167 |
168 | #
169 | # Checks for libraries.
170 | #
171 |
172 | # Note, that autogen.sh greps for the next line.
173 | AM_GNU_GETTEXT_VERSION([0.12.1])
174 | AM_GNU_GETTEXT([external])
175 | # We always want NLs, despite what the above macro figures out.
176 | USE_NLS=yes
177 |
178 | # Checks for header files.
179 | AC_HEADER_STDC
180 | AC_CHECK_HEADERS(string.h unistd.h langinfo.h termio.h locale.h)
181 |
182 | AC_CHECK_FUNCS(stpcpy)
183 |
184 | # Checks for typedefs, structures, and compiler characteristics.
185 | AC_C_CONST
186 | AC_C_INLINE
187 | AC_TYPE_SIZE_T
188 | AC_TYPE_SIGNAL
189 |
190 | AM_CONDITIONAL(CROSS_COMPILING, test x$cross_compiling = xyes)
191 |
192 | # Add some extra libs here so that previous tests don't fail for
193 | # mysterious reasons - the final link step should bail out.
194 | if test "$have_w32_system" = yes; then
195 | W32LIBS="-lwsock32"
196 | fi
197 |
198 | if test "$GCC" = yes; then
199 | CFLAGS="$CFLAGS -Wall -mms-bitfields"
200 | CXXFLAGS="$CXXFLAGS -Wall -mms-bitfields"
201 | if test "$USE_MAINTAINER_MODE" = "yes"; then
202 | CFLAGS="$CFLAGS -Wcast-align -Wshadow -Wstrict-prototypes"
203 | CFLAGS="$CFLAGS -Wno-format-y2k -Wformat-security"
204 | CXXFLAGS="$CXXFLAGS -Wcast-align -Wshadow"
205 | CXXFLAGS="$CXXFLAGS -Wno-format-y2k -Wformat-security"
206 | fi
207 | HARDENING="-Wl,--dynamicbase -Wl,--nxcompat -fno-exceptions -D_FORTIFY_SOURCE=2"
208 | CFLAGS="$CFLAGS $HARDENING"
209 | CXXFLAGS="$CXXFLAGS $HARDENING"
210 | fi
211 |
212 | AC_SUBST(W32LIBS)
213 |
214 |
215 | #
216 | # libgpg-error is a library with error codes shared between GnuPG
217 | # related projects.
218 | #
219 | AM_PATH_GPG_ERROR("$NEED_GPG_ERROR_VERSION",
220 | have_gpg_error=yes,have_gpg_error=no)
221 | AC_DEFINE(GPG_ERR_SOURCE_DEFAULT, GPG_ERR_SOURCE_USER_1,
222 | [The default error source for GpgEX.])
223 |
224 | # We need the declaration for the function GetUserDefaultUILanguage
225 | # and AllowSetForegroundWindow.
226 | AC_DEFINE(WINVER, 0x500, [Version of Windows API])
227 |
228 | #
229 | # libassuan is used for IPC
230 | #
231 | AM_PATH_LIBASSUAN("$NEED_LIBASSUAN_API:$NEED_LIBASSUAN_VERSION",
232 | have_libassuan=yes,have_libassuan=no)
233 |
234 |
235 | AH_BOTTOM([
236 | /* We don't want the old assuan codes anymore. */
237 | #define _ASSUAN_ONLY_GPG_ERRORS 1
238 | /* We use the gettext code from libgpg-error. */
239 | #define GPG_ERR_ENABLE_GETTEXT_MACROS
240 |
241 | ])
242 |
243 |
244 | #
245 | # Provide information about the build.
246 | #
247 | BUILD_REVISION="mym4_revision"
248 | AC_SUBST(BUILD_REVISION)
249 | AC_DEFINE_UNQUOTED(BUILD_REVISION, "$BUILD_REVISION",
250 | [GIT commit id revision used to build this package])
251 |
252 | changequote(,)dnl
253 | BUILD_FILEVERSION=`echo "$VERSION" | sed 's/\([0-9.]*\).*/\1./;s/\./,/g'`
254 | changequote([,])dnl
255 | BUILD_FILEVERSION="${BUILD_FILEVERSION}mym4_revision_dec"
256 | AC_SUBST(BUILD_FILEVERSION)
257 | BUILD_FILEVERSION_DOT=`echo "$BUILD_FILEVERSION" | tr ',' '.'`
258 | AC_SUBST(BUILD_FILEVERSION_DOT)
259 |
260 | BUILD_TIMESTAMP=`date -u +%Y-%m-%dT%H:%M+0000 2>/dev/null || date`
261 | AC_SUBST(BUILD_TIMESTAMP)
262 | AC_DEFINE_UNQUOTED(BUILD_TIMESTAMP, "$BUILD_TIMESTAMP",
263 | [The time this package was configured for a build])
264 | BUILD_HOSTNAME="$ac_hostname"
265 | AC_SUBST(BUILD_HOSTNAME)
266 |
267 |
268 | #
269 | # Print errors here so that they are visible all
270 | # together and the user can acquire them all together.
271 | #
272 | die=no
273 | if test "$have_gpg_error" = "no"; then
274 | die=yes
275 | AC_MSG_NOTICE([[
276 | ***
277 | *** You need libgpg-error to build this program.
278 | ** This library is for example available at
279 | *** ftp://ftp.gnupg.org/gcrypt/libgpg-error
280 | *** (at least version $NEED_GPG_ERROR_VERSION is required.)
281 | ***]])
282 | fi
283 | if test "$have_libassuan" = "no"; then
284 | die=yes
285 | AC_MSG_NOTICE([[
286 | ***
287 | *** You need libassuan to build this program.
288 | *** This library is for example available at
289 | *** ftp://ftp.gnupg.org/gcrypt/libassuan/
290 | *** (at least version $NEED_LIBASSUAN_VERSION is required).
291 | ***]])
292 | fi
293 | if test "$die" = "yes"; then
294 | AC_MSG_ERROR([[
295 | ***
296 | *** Required libraries not found. Please consult the above messages
297 | *** and install them before running configure again.
298 | ***]])
299 | fi
300 |
301 |
302 | AC_CONFIG_FILES([ Makefile
303 | doc/Makefile
304 | src/Makefile
305 | src/versioninfo.rc
306 | src/gpgex.manifest
307 | po/Makefile.in
308 | m4/Makefile
309 | ])
310 | AC_OUTPUT
311 |
--------------------------------------------------------------------------------