summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ABOUT-NLS1101
-rw-r--r--AUTHORS85
-rw-r--r--COPYING674
-rw-r--r--ChangeLog1704
-rw-r--r--HACKING57
-rw-r--r--INSTALL237
-rw-r--r--Makefile.am14
-rw-r--r--NEWS1
-rw-r--r--RATIONALE246
-rw-r--r--README257
-rw-r--r--TODO150
-rwxr-xr-xbin/grephdr.sh3
-rwxr-xr-xbin/grepsrc.sh3
-rwxr-xr-xbin/rename.sh6
-rwxr-xr-xbootstrap7
-rwxr-xr-xconfig.rpath614
-rw-r--r--configure.ac821
-rw-r--r--contrib/Makefile.am19
-rw-r--r--contrib/config.scm1568
-rwxr-xr-xcontrib/coverage.sh13
-rw-r--r--contrib/defaults.conf139
-rw-r--r--contrib/gnunet-logo-big.pngbin0 -> 250489 bytes
-rw-r--r--contrib/gnunet-logo-color.pngbin0 -> 6851 bytes
-rw-r--r--contrib/hostlist.cgi5
-rw-r--r--contrib/hostlist.php35
-rwxr-xr-xcontrib/report.sh200
-rw-r--r--doc/man/Makefile.am7
-rw-r--r--doc/man/gnunet-arm.157
-rw-r--r--doc/man/gnunet-peerinfo.142
-rw-r--r--doc/man/gnunet-statistics.150
-rw-r--r--doc/man/gnunet-transport.196
-rw-r--r--m4/Makefile.am1
-rw-r--r--m4/align.m428
-rw-r--r--po/ChangeLog16
-rw-r--r--po/GNUnet.pot5168
-rw-r--r--po/LINGUAS2
-rw-r--r--po/Makefile.in.in403
-rw-r--r--po/Makevars41
-rw-r--r--po/Makevars.template41
-rw-r--r--po/POTFILES.in0
-rw-r--r--po/Rules-quot47
-rw-r--r--po/boldquot.sed10
-rw-r--r--po/de.gmobin0 -> 40027 bytes
-rw-r--r--po/de.po7387
-rw-r--r--po/en@boldquot.header25
-rw-r--r--po/en@quot.header22
-rw-r--r--po/es.gmobin0 -> 31722 bytes
-rw-r--r--po/es.po6921
-rw-r--r--po/insert-header.sin23
-rw-r--r--po/quot.sed6
-rw-r--r--po/remove-potcdate.sin19
-rw-r--r--po/stamp-po1
-rw-r--r--po/sv.gmobin0 -> 19833 bytes
-rw-r--r--po/sv.po5885
-rw-r--r--po/update.pl230
-rw-r--r--po/vi.gmobin0 -> 166871 bytes
-rw-r--r--po/vi.po5772
-rwxr-xr-xpre-commit17
-rw-r--r--src/Makefile.am17
-rw-r--r--src/arm/Makefile.am58
-rw-r--r--src/arm/arm.h32
-rw-r--r--src/arm/arm_api.c337
-rw-r--r--src/arm/gnunet-arm.c180
-rw-r--r--src/arm/gnunet-service-arm.c712
-rw-r--r--src/arm/test_arm_api.c140
-rw-r--r--src/arm/test_arm_api_data.conf7
-rwxr-xr-xsrc/arm/test_gnunet_arm.sh117
-rw-r--r--src/core/Makefile.am68
-rw-r--r--src/core/core.h308
-rw-r--r--src/core/core_api.c1071
-rw-r--r--src/core/gnunet-service-core.c2859
-rw-r--r--src/core/test_core_api.c368
-rw-r--r--src/core/test_core_api_data.conf27
-rw-r--r--src/core/test_core_api_peer1.conf40
-rw-r--r--src/core/test_core_api_peer2.conf39
-rw-r--r--src/core/test_core_api_start_only.c257
-rw-r--r--src/datastore/plugin_datastore.h241
-rw-r--r--src/fragmentation/Makefile.am28
-rw-r--r--src/fragmentation/fragmentation.c702
-rw-r--r--src/fragmentation/test_fragmentation.c439
-rw-r--r--src/hello/Makefile.am28
-rw-r--r--src/hello/hello.c482
-rw-r--r--src/hello/test_hello.c185
-rw-r--r--src/include/Makefile.am42
-rw-r--r--src/include/gettext.h71
-rw-r--r--src/include/gnunet_arm_service.h107
-rw-r--r--src/include/gnunet_client_lib.h160
-rw-r--r--src/include/gnunet_common.h469
-rw-r--r--src/include/gnunet_configuration_lib.h238
-rw-r--r--src/include/gnunet_container_lib.h784
-rw-r--r--src/include/gnunet_core_service.h323
-rw-r--r--src/include/gnunet_crypto_lib.h567
-rw-r--r--src/include/gnunet_datastore_service.h187
-rw-r--r--src/include/gnunet_directories.h.in34
-rw-r--r--src/include/gnunet_disk_lib.h279
-rw-r--r--src/include/gnunet_fragmentation_lib.h113
-rw-r--r--src/include/gnunet_getopt_lib.h251
-rw-r--r--src/include/gnunet_hello_lib.h201
-rw-r--r--src/include/gnunet_network_lib.h308
-rw-r--r--src/include/gnunet_os_lib.h158
-rw-r--r--src/include/gnunet_peerinfo_service.h111
-rw-r--r--src/include/gnunet_plugin_lib.h84
-rw-r--r--src/include/gnunet_program_lib.h90
-rw-r--r--src/include/gnunet_protocols.h319
-rw-r--r--src/include/gnunet_pseudonym_lib.h125
-rw-r--r--src/include/gnunet_resolver_service.h135
-rw-r--r--src/include/gnunet_scheduler_lib.h442
-rw-r--r--src/include/gnunet_server_lib.h498
-rw-r--r--src/include/gnunet_service_lib.h140
-rw-r--r--src/include/gnunet_signal_lib.h73
-rw-r--r--src/include/gnunet_signatures.h77
-rw-r--r--src/include/gnunet_statistics_service.h157
-rw-r--r--src/include/gnunet_strings_lib.h139
-rw-r--r--src/include/gnunet_time_lib.h246
-rw-r--r--src/include/gnunet_transport_service.h241
-rw-r--r--src/include/gnunet_upnp_service.h75
-rw-r--r--src/include/gnunet_util_lib.h64
-rw-r--r--src/include/platform.h221
-rw-r--r--src/include/plibc.h582
-rw-r--r--src/include/winproc.h216
-rw-r--r--src/peerinfo/Makefile.am56
-rw-r--r--src/peerinfo/gnunet-peerinfo.c152
-rw-r--r--src/peerinfo/gnunet-service-peerinfo.c708
-rw-r--r--src/peerinfo/peerinfo.h135
-rw-r--r--src/peerinfo/peerinfo_api.c302
-rw-r--r--src/peerinfo/test_peerinfo_api.c175
-rw-r--r--src/peerinfo/test_peerinfo_api_data.conf5
-rw-r--r--src/resolver/Makefile.am46
-rw-r--r--src/resolver/gnunet-service-resolver.c483
-rw-r--r--src/resolver/resolver.h63
-rw-r--r--src/resolver/resolver_api.c468
-rw-r--r--src/resolver/test_resolver_api.c229
-rw-r--r--src/resolver/test_resolver_api_data.conf5
-rw-r--r--src/statistics/Makefile.am59
-rw-r--r--src/statistics/gnunet-service-statistics.c470
-rw-r--r--src/statistics/gnunet-statistics.c179
-rw-r--r--src/statistics/statistics.h94
-rw-r--r--src/statistics/statistics_api.c688
-rwxr-xr-xsrc/statistics/test_gnunet_statistics.sh177
-rw-r--r--src/statistics/test_statistics_api.c177
-rw-r--r--src/statistics/test_statistics_api_data.conf5
-rw-r--r--src/template/Makefile.am37
-rw-r--r--src/template/gnunet-service-template.c87
-rw-r--r--src/template/gnunet-template.c81
-rw-r--r--src/template/test_template_api.c45
-rw-r--r--src/transport/Makefile.am84
-rw-r--r--src/transport/NOTES46
-rw-r--r--src/transport/gnunet-service-transport.c2852
-rw-r--r--src/transport/gnunet-transport.c42
-rw-r--r--src/transport/plugin_transport.h468
-rw-r--r--src/transport/plugin_transport_http.c2085
-rw-r--r--src/transport/plugin_transport_smtp.c906
-rw-r--r--src/transport/plugin_transport_tcp.c1782
-rw-r--r--src/transport/plugin_transport_template.c335
-rw-r--r--src/transport/plugin_transport_udp.c592
-rw-r--r--src/transport/test_transport_api.c305
-rw-r--r--src/transport/test_transport_api_data.conf24
-rw-r--r--src/transport/test_transport_api_peer1.conf25
-rw-r--r--src/transport/test_transport_api_peer2.conf25
-rw-r--r--src/transport/transport.h238
-rw-r--r--src/transport/transport_api.c1863
-rw-r--r--src/upnp/Makefile.am59
-rw-r--r--src/upnp/draft-cheshire-nat-pmp.txt1160
-rw-r--r--src/upnp/test_upnp.c110
-rw-r--r--src/upnp/upnp.c721
-rw-r--r--src/upnp/upnp.h82
-rw-r--r--src/upnp/upnp_init.c208
-rw-r--r--src/upnp/upnp_ip.c47
-rw-r--r--src/upnp/upnp_ip.h40
-rw-r--r--src/upnp/upnp_util.c152
-rw-r--r--src/upnp/upnp_util.h68
-rw-r--r--src/upnp/upnp_xmlnode.c487
-rw-r--r--src/upnp/upnp_xmlnode.h92
-rw-r--r--src/util/Makefile.am308
-rw-r--r--src/util/client.c526
-rw-r--r--src/util/common_allocation.c206
-rw-r--r--src/util/common_endian.c52
-rw-r--r--src/util/common_gettext.c42
-rw-r--r--src/util/common_logging.c401
-rw-r--r--src/util/configuration.c848
-rw-r--r--src/util/container_bloomfilter.c677
-rw-r--r--src/util/container_heap.c533
-rw-r--r--src/util/container_meta_data.c721
-rw-r--r--src/util/container_multihashmap.c334
-rw-r--r--src/util/crypto_aes.c148
-rw-r--r--src/util/crypto_crc.c106
-rw-r--r--src/util/crypto_hash.c791
-rw-r--r--src/util/crypto_ksk.c791
-rw-r--r--src/util/crypto_random.c136
-rw-r--r--src/util/crypto_rsa.c948
-rw-r--r--src/util/disk.c954
-rw-r--r--src/util/getopt.c1077
-rw-r--r--src/util/getopt_helpers.c200
-rw-r--r--src/util/network.c1239
-rw-r--r--src/util/os_installation.c443
-rw-r--r--src/util/os_load.c653
-rw-r--r--src/util/os_network.c286
-rw-r--r--src/util/os_priority.c186
-rw-r--r--src/util/perf_crypto_hash.c64
-rw-r--r--src/util/plugin.c243
-rw-r--r--src/util/program.c202
-rw-r--r--src/util/pseudonym.c545
-rw-r--r--src/util/scheduler.c886
-rw-r--r--src/util/server.c1091
-rw-r--r--src/util/server_tc.c198
-rw-r--r--src/util/service.c1451
-rw-r--r--src/util/signal.c76
-rw-r--r--src/util/strings.c396
-rw-r--r--src/util/test_client.c195
-rw-r--r--src/util/test_common_allocation.c112
-rw-r--r--src/util/test_common_endian.c42
-rw-r--r--src/util/test_common_logging.c100
-rw-r--r--src/util/test_configuration.c229
-rw-r--r--src/util/test_configuration_data.conf30
-rw-r--r--src/util/test_container_bloomfilter.c246
-rw-r--r--src/util/test_container_heap.c112
-rw-r--r--src/util/test_container_meta_data.c262
-rw-r--r--src/util/test_container_meta_data_image.jpgbin0 -> 136107 bytes
-rw-r--r--src/util/test_container_multihashmap.c113
-rw-r--r--src/util/test_crypto_aes.c180
-rw-r--r--src/util/test_crypto_aes_weak.c203
-rw-r--r--src/util/test_crypto_crc.c221
-rw-r--r--src/util/test_crypto_hash.c165
-rw-r--r--src/util/test_crypto_ksk.c220
-rw-r--r--src/util/test_crypto_random.c71
-rw-r--r--src/util/test_crypto_rsa.c335
-rw-r--r--src/util/test_disk.c274
-rw-r--r--src/util/test_getopt.c239
-rw-r--r--src/util/test_network.c209
-rw-r--r--src/util/test_network_addressing.c193
-rw-r--r--src/util/test_network_receive_cancel.c164
-rw-r--r--src/util/test_network_timeout.c144
-rw-r--r--src/util/test_network_timeout_no_connect.c95
-rw-r--r--src/util/test_network_transmit_cancel.c97
-rw-r--r--src/util/test_os_load.c182
-rw-r--r--src/util/test_os_network.c73
-rw-r--r--src/util/test_os_priority.c61
-rw-r--r--src/util/test_plugin.c64
-rw-r--r--src/util/test_plugin_plug.c42
-rw-r--r--src/util/test_program.c94
-rw-r--r--src/util/test_program_data.conf0
-rw-r--r--src/util/test_pseudonym.c138
-rw-r--r--src/util/test_pseudonym_data.conf8
-rw-r--r--src/util/test_scheduler.c263
-rw-r--r--src/util/test_scheduler_delay.c107
-rw-r--r--src/util/test_server.c287
-rw-r--r--src/util/test_server_disconnect.c241
-rw-r--r--src/util/test_server_with_client.c215
-rw-r--r--src/util/test_service.c337
-rw-r--r--src/util/test_service_data.conf26
-rw-r--r--src/util/test_strings.c111
-rw-r--r--src/util/test_time.c122
-rw-r--r--src/util/time.c286
253 files changed, 101835 insertions, 0 deletions
diff --git a/ABOUT-NLS b/ABOUT-NLS
new file mode 100644
index 000000000..ec20977e0
--- /dev/null
+++ b/ABOUT-NLS
@@ -0,0 +1,1101 @@
+1 Notes on the Free Translation Project
+***************************************
+
+Free software is going international! The Free Translation Project is
+a way to get maintainers of free software, translators, and users all
+together, so that free software will gradually become able to speak many
+languages. A few packages already provide translations for their
+messages.
+
+ If you found this `ABOUT-NLS' file inside a distribution, you may
+assume that the distributed package does use GNU `gettext' internally,
+itself available at your nearest GNU archive site. But you do _not_
+need to install GNU `gettext' prior to configuring, installing or using
+this package with messages translated.
+
+ Installers will find here some useful hints. These notes also
+explain how users should proceed for getting the programs to use the
+available translations. They tell how people wanting to contribute and
+work on translations can contact the appropriate team.
+
+ When reporting bugs in the `intl/' directory or bugs which may be
+related to internationalization, you should tell about the version of
+`gettext' which is used. The information can be found in the
+`intl/VERSION' file, in internationalized packages.
+
+1.1 Quick configuration advice
+==============================
+
+If you want to exploit the full power of internationalization, you
+should configure it using
+
+ ./configure --with-included-gettext
+
+to force usage of internationalizing routines provided within this
+package, despite the existence of internationalizing capabilities in the
+operating system where this package is being installed. So far, only
+the `gettext' implementation in the GNU C library version 2 provides as
+many features (such as locale alias, message inheritance, automatic
+charset conversion or plural form handling) as the implementation here.
+It is also not possible to offer this additional functionality on top
+of a `catgets' implementation. Future versions of GNU `gettext' will
+very likely convey even more functionality. So it might be a good idea
+to change to GNU `gettext' as soon as possible.
+
+ So you need _not_ provide this option if you are using GNU libc 2 or
+you have installed a recent copy of the GNU gettext package with the
+included `libintl'.
+
+1.2 INSTALL Matters
+===================
+
+Some packages are "localizable" when properly installed; the programs
+they contain can be made to speak your own native language. Most such
+packages use GNU `gettext'. Other packages have their own ways to
+internationalization, predating GNU `gettext'.
+
+ By default, this package will be installed to allow translation of
+messages. It will automatically detect whether the system already
+provides the GNU `gettext' functions. If not, the included GNU
+`gettext' library will be used. This library is wholly contained
+within this package, usually in the `intl/' subdirectory, so prior
+installation of the GNU `gettext' package is _not_ required.
+Installers may use special options at configuration time for changing
+the default behaviour. The commands:
+
+ ./configure --with-included-gettext
+ ./configure --disable-nls
+
+will, respectively, bypass any pre-existing `gettext' to use the
+internationalizing routines provided within this package, or else,
+_totally_ disable translation of messages.
+
+ When you already have GNU `gettext' installed on your system and run
+configure without an option for your new package, `configure' will
+probably detect the previously built and installed `libintl.a' file and
+will decide to use this. This might not be desirable. You should use
+the more recent version of the GNU `gettext' library. I.e. if the file
+`intl/VERSION' shows that the library which comes with this package is
+more recent, you should use
+
+ ./configure --with-included-gettext
+
+to prevent auto-detection.
+
+ The configuration process will not test for the `catgets' function
+and therefore it will not be used. The reason is that even an
+emulation of `gettext' on top of `catgets' could not provide all the
+extensions of the GNU `gettext' library.
+
+ Internationalized packages usually have many `po/LL.po' files, where
+LL gives an ISO 639 two-letter code identifying the language. Unless
+translations have been forbidden at `configure' time by using the
+`--disable-nls' switch, all available translations are installed
+together with the package. However, the environment variable `LINGUAS'
+may be set, prior to configuration, to limit the installed set.
+`LINGUAS' should then contain a space separated list of two-letter
+codes, stating which languages are allowed.
+
+1.3 Using This Package
+======================
+
+As a user, if your language has been installed for this package, you
+only have to set the `LANG' environment variable to the appropriate
+`LL_CC' combination. Here `LL' is an ISO 639 two-letter language code,
+and `CC' is an ISO 3166 two-letter country code. For example, let's
+suppose that you speak German and live in Germany. At the shell
+prompt, merely execute `setenv LANG de_DE' (in `csh'),
+`export LANG; LANG=de_DE' (in `sh') or `export LANG=de_DE' (in `bash').
+This can be done from your `.login' or `.profile' file, once and for
+all.
+
+ You might think that the country code specification is redundant.
+But in fact, some languages have dialects in different countries. For
+example, `de_AT' is used for Austria, and `pt_BR' for Brazil. The
+country code serves to distinguish the dialects.
+
+ The locale naming convention of `LL_CC', with `LL' denoting the
+language and `CC' denoting the country, is the one use on systems based
+on GNU libc. On other systems, some variations of this scheme are
+used, such as `LL' or `LL_CC.ENCODING'. You can get the list of
+locales supported by your system for your language by running the
+command `locale -a | grep '^LL''.
+
+ Not all programs have translations for all languages. By default, an
+English message is shown in place of a nonexistent translation. If you
+understand other languages, you can set up a priority list of languages.
+This is done through a different environment variable, called
+`LANGUAGE'. GNU `gettext' gives preference to `LANGUAGE' over `LANG'
+for the purpose of message handling, but you still need to have `LANG'
+set to the primary language; this is required by other parts of the
+system libraries. For example, some Swedish users who would rather
+read translations in German than English for when Swedish is not
+available, set `LANGUAGE' to `sv:de' while leaving `LANG' to `sv_SE'.
+
+ Special advice for Norwegian users: The language code for Norwegian
+bokma*l changed from `no' to `nb' recently (in 2003). During the
+transition period, while some message catalogs for this language are
+installed under `nb' and some older ones under `no', it's recommended
+for Norwegian users to set `LANGUAGE' to `nb:no' so that both newer and
+older translations are used.
+
+ In the `LANGUAGE' environment variable, but not in the `LANG'
+environment variable, `LL_CC' combinations can be abbreviated as `LL'
+to denote the language's main dialect. For example, `de' is equivalent
+to `de_DE' (German as spoken in Germany), and `pt' to `pt_PT'
+(Portuguese as spoken in Portugal) in this context.
+
+1.4 Translating Teams
+=====================
+
+For the Free Translation Project to be a success, we need interested
+people who like their own language and write it well, and who are also
+able to synergize with other translators speaking the same language.
+Each translation team has its own mailing list. The up-to-date list of
+teams can be found at the Free Translation Project's homepage,
+`http://www.iro.umontreal.ca/contrib/po/HTML/', in the "National teams"
+area.
+
+ If you'd like to volunteer to _work_ at translating messages, you
+should become a member of the translating team for your own language.
+The subscribing address is _not_ the same as the list itself, it has
+`-request' appended. For example, speakers of Swedish can send a
+message to `sv-request@li.org', having this message body:
+
+ subscribe
+
+ Keep in mind that team members are expected to participate
+_actively_ in translations, or at solving translational difficulties,
+rather than merely lurking around. If your team does not exist yet and
+you want to start one, or if you are unsure about what to do or how to
+get started, please write to `translation@iro.umontreal.ca' to reach the
+coordinator for all translator teams.
+
+ The English team is special. It works at improving and uniformizing
+the terminology in use. Proven linguistic skills are praised more than
+programming skills, here.
+
+1.5 Available Packages
+======================
+
+Languages are not equally supported in all packages. The following
+matrix shows the current state of internationalization, as of October
+2006. The matrix shows, in regard of each package, for which languages
+PO files have been submitted to translation coordination, with a
+translation percentage of at least 50%.
+
+ Ready PO files af am ar az be bg bs ca cs cy da de el en en_GB eo
+ +----------------------------------------------------+
+ GNUnet | [] |
+ a2ps | [] [] [] [] [] |
+ aegis | () |
+ ant-phone | () |
+ anubis | [] |
+ ap-utils | |
+ aspell | [] [] [] [] [] |
+ bash | [] [] [] |
+ batchelor | [] |
+ bfd | |
+ bibshelf | [] |
+ binutils | [] |
+ bison | [] [] |
+ bison-runtime | |
+ bluez-pin | [] [] [] [] [] |
+ cflow | [] |
+ clisp | [] [] |
+ console-tools | [] [] |
+ coreutils | [] [] [] |
+ cpio | |
+ cpplib | [] [] [] |
+ cryptonit | [] |
+ darkstat | [] () [] |
+ dialog | [] [] [] [] [] [] |
+ diffutils | [] [] [] [] [] [] |
+ doodle | [] |
+ e2fsprogs | [] [] |
+ enscript | [] [] [] [] |
+ error | [] [] [] [] |
+ fetchmail | [] [] () [] |
+ fileutils | [] [] |
+ findutils | [] [] [] |
+ flex | [] [] [] |
+ fslint | [] |
+ gas | |
+ gawk | [] [] [] |
+ gbiff | [] |
+ gcal | [] |
+ gcc | [] |
+ gettext-examples | [] [] [] [] [] |
+ gettext-runtime | [] [] [] [] [] |
+ gettext-tools | [] [] |
+ gimp-print | [] [] [] [] |
+ gip | [] |
+ gliv | [] |
+ glunarclock | [] |
+ gmult | [] [] |
+ gnubiff | () |
+ gnucash | () () [] |
+ gnucash-glossary | [] () |
+ gnuedu | |
+ gnulib | [] [] [] [] [] [] |
+ gnunet-gtk | |
+ gnutls | |
+ gpe-aerial | [] [] |
+ gpe-beam | [] [] |
+ gpe-calendar | |
+ gpe-clock | [] [] |
+ gpe-conf | [] [] |
+ gpe-contacts | |
+ gpe-edit | [] |
+ gpe-filemanager | |
+ gpe-go | [] |
+ gpe-login | [] [] |
+ gpe-ownerinfo | [] [] |
+ gpe-package | |
+ gpe-sketchbook | [] [] |
+ gpe-su | [] [] |
+ gpe-taskmanager | [] [] |
+ gpe-timesheet | [] |
+ gpe-today | [] [] |
+ gpe-todo | |
+ gphoto2 | [] [] [] [] |
+ gprof | [] [] |
+ gpsdrive | () () |
+ gramadoir | [] [] |
+ grep | [] [] [] [] [] [] |
+ gretl | |
+ gsasl | |
+ gss | |
+ gst-plugins | [] [] [] [] |
+ gst-plugins-base | [] [] [] |
+ gst-plugins-good | [] [] [] [] [] [] [] |
+ gstreamer | [] [] [] [] [] [] [] |
+ gtick | () |
+ gtkam | [] [] [] |
+ gtkorphan | [] [] |
+ gtkspell | [] [] [] [] |
+ gutenprint | [] |
+ hello | [] [] [] [] [] |
+ id-utils | [] [] |
+ impost | |
+ indent | [] [] [] |
+ iso_3166 | [] [] |
+ iso_3166_2 | |
+ iso_4217 | [] |
+ iso_639 | [] [] |
+ jpilot | [] |
+ jtag | |
+ jwhois | |
+ kbd | [] [] [] [] |
+ keytouch | |
+ keytouch-editor | |
+ keytouch-keyboa... | |
+ latrine | () |
+ ld | [] |
+ leafpad | [] [] [] [] [] |
+ libc | [] [] [] [] [] |
+ libexif | [] |
+ libextractor | [] |
+ libgpewidget | [] [] [] |
+ libgpg-error | [] |
+ libgphoto2 | [] [] |
+ libgphoto2_port | [] [] |
+ libgsasl | |
+ libiconv | [] [] |
+ libidn | [] [] |
+ lifelines | [] () |
+ lilypond | [] |
+ lingoteach | |
+ lynx | [] [] [] [] |
+ m4 | [] [] [] [] |
+ mailutils | [] |
+ make | [] [] |
+ man-db | [] () [] [] |
+ minicom | [] [] [] |
+ mysecretdiary | [] [] |
+ nano | [] [] [] |
+ nano_1_0 | [] () [] [] |
+ opcodes | [] |
+ parted | |
+ pilot-qof | [] |
+ psmisc | [] |
+ pwdutils | |
+ python | |
+ qof | |
+ radius | [] |
+ recode | [] [] [] [] [] [] |
+ rpm | [] [] |
+ screem | |
+ scrollkeeper | [] [] [] [] [] [] [] [] |
+ sed | [] [] [] |
+ sh-utils | [] [] |
+ shared-mime-info | [] [] [] [] |
+ sharutils | [] [] [] [] [] [] |
+ shishi | |
+ silky | |
+ skencil | [] () |
+ sketch | [] () |
+ solfege | |
+ soundtracker | [] [] |
+ sp | [] |
+ stardict | [] |
+ system-tools-ba... | [] [] [] [] [] [] [] [] [] |
+ tar | [] |
+ texinfo | [] [] [] |
+ textutils | [] [] [] |
+ tin | () () |
+ tp-robot | [] |
+ tuxpaint | [] [] [] [] [] |
+ unicode-han-tra... | |
+ unicode-transla... | |
+ util-linux | [] [] [] [] |
+ vorbis-tools | [] [] [] [] |
+ wastesedge | () |
+ wdiff | [] [] [] [] |
+ wget | [] [] |
+ xchat | [] [] [] [] [] [] |
+ xkeyboard-config | |
+ xpad | [] [] |
+ +----------------------------------------------------+
+ af am ar az be bg bs ca cs cy da de el en en_GB eo
+ 10 0 1 2 9 22 1 42 41 2 60 95 16 1 17 16
+
+ es et eu fa fi fr ga gl gu he hi hr hu id is it
+ +--------------------------------------------------+
+ GNUnet | |
+ a2ps | [] [] [] () |
+ aegis | |
+ ant-phone | [] |
+ anubis | [] |
+ ap-utils | [] [] |
+ aspell | [] [] [] |
+ bash | [] [] [] |
+ batchelor | [] [] |
+ bfd | [] |
+ bibshelf | [] [] [] |
+ binutils | [] [] [] |
+ bison | [] [] [] [] [] [] |
+ bison-runtime | [] [] [] [] [] |
+ bluez-pin | [] [] [] [] [] |
+ cflow | [] |
+ clisp | [] [] |
+ console-tools | |
+ coreutils | [] [] [] [] [] [] |
+ cpio | [] [] [] |
+ cpplib | [] [] |
+ cryptonit | [] |
+ darkstat | [] () [] [] [] |
+ dialog | [] [] [] [] [] [] [] [] |
+ diffutils | [] [] [] [] [] [] [] [] [] |
+ doodle | [] [] |
+ e2fsprogs | [] [] [] |
+ enscript | [] [] [] |
+ error | [] [] [] [] [] |
+ fetchmail | [] |
+ fileutils | [] [] [] [] [] [] |
+ findutils | [] [] [] [] |
+ flex | [] [] [] |
+ fslint | [] |
+ gas | [] [] |
+ gawk | [] [] [] [] |
+ gbiff | [] |
+ gcal | [] [] |
+ gcc | [] |
+ gettext-examples | [] [] [] [] [] [] |
+ gettext-runtime | [] [] [] [] [] [] |
+ gettext-tools | [] [] [] |
+ gimp-print | [] [] |
+ gip | [] [] [] |
+ gliv | () |
+ glunarclock | [] [] [] |
+ gmult | [] [] [] |
+ gnubiff | () () |
+ gnucash | () () () |
+ gnucash-glossary | [] [] |
+ gnuedu | [] |
+ gnulib | [] [] [] [] [] [] [] [] |
+ gnunet-gtk | |
+ gnutls | |
+ gpe-aerial | [] [] |
+ gpe-beam | [] [] |
+ gpe-calendar | |
+ gpe-clock | [] [] [] [] |
+ gpe-conf | [] |
+ gpe-contacts | [] [] |
+ gpe-edit | [] [] [] [] |
+ gpe-filemanager | [] |
+ gpe-go | [] [] [] |
+ gpe-login | [] [] [] |
+ gpe-ownerinfo | [] [] [] [] [] |
+ gpe-package | [] |
+ gpe-sketchbook | [] [] |
+ gpe-su | [] [] [] [] |
+ gpe-taskmanager | [] [] [] |
+ gpe-timesheet | [] [] [] [] |
+ gpe-today | [] [] [] [] |
+ gpe-todo | [] |
+ gphoto2 | [] [] [] [] [] |
+ gprof | [] [] [] [] |
+ gpsdrive | () () [] () |
+ gramadoir | [] [] |
+ grep | [] [] [] [] [] [] [] [] [] [] [] [] |
+ gretl | [] [] [] |
+ gsasl | [] [] |
+ gss | [] |
+ gst-plugins | [] [] [] |
+ gst-plugins-base | [] [] |
+ gst-plugins-good | [] [] [] |
+ gstreamer | [] [] [] |
+ gtick | [] |
+ gtkam | [] [] [] [] |
+ gtkorphan | [] [] |
+ gtkspell | [] [] [] [] [] [] |
+ gutenprint | [] |
+ hello | [] [] [] [] [] [] [] [] [] [] [] [] [] |
+ id-utils | [] [] [] [] [] |
+ impost | [] [] |
+ indent | [] [] [] [] [] [] [] [] [] [] |
+ iso_3166 | [] [] [] |
+ iso_3166_2 | [] |
+ iso_4217 | [] [] [] [] |
+ iso_639 | [] [] [] [] [] |
+ jpilot | [] [] |
+ jtag | [] |
+ jwhois | [] [] [] [] [] |
+ kbd | [] [] |
+ keytouch | [] |
+ keytouch-editor | [] |
+ keytouch-keyboa... | [] |
+ latrine | [] [] [] |
+ ld | [] [] |
+ leafpad | [] [] [] [] [] [] |
+ libc | [] [] [] [] [] |
+ libexif | [] |
+ libextractor | [] |
+ libgpewidget | [] [] [] [] [] |
+ libgpg-error | |
+ libgphoto2 | [] [] [] |
+ libgphoto2_port | [] [] |
+ libgsasl | [] [] |
+ libiconv | [] [] |
+ libidn | [] [] |
+ lifelines | () |
+ lilypond | [] |
+ lingoteach | [] [] [] |
+ lynx | [] [] [] |
+ m4 | [] [] [] [] |
+ mailutils | [] [] |
+ make | [] [] [] [] [] [] [] [] |
+ man-db | () |
+ minicom | [] [] [] [] |
+ mysecretdiary | [] [] [] |
+ nano | [] [] [] [] [] [] |
+ nano_1_0 | [] [] [] [] [] |
+ opcodes | [] [] [] [] |
+ parted | [] [] [] [] |
+ pilot-qof | |
+ psmisc | [] [] [] |
+ pwdutils | |
+ python | |
+ qof | [] |
+ radius | [] [] |
+ recode | [] [] [] [] [] [] [] [] |
+ rpm | [] [] |
+ screem | |
+ scrollkeeper | [] [] [] |
+ sed | [] [] [] [] [] |
+ sh-utils | [] [] [] [] [] [] [] |
+ shared-mime-info | [] [] [] [] [] [] |
+ sharutils | [] [] [] [] [] [] [] [] |
+ shishi | |
+ silky | [] |
+ skencil | [] [] |
+ sketch | [] [] |
+ solfege | [] |
+ soundtracker | [] [] [] |
+ sp | [] |
+ stardict | [] |
+ system-tools-ba... | [] [] [] [] [] [] [] [] |
+ tar | [] [] [] [] [] [] [] |
+ texinfo | [] [] |
+ textutils | [] [] [] [] [] |
+ tin | [] () |
+ tp-robot | [] [] [] [] |
+ tuxpaint | [] [] |
+ unicode-han-tra... | |
+ unicode-transla... | [] [] |
+ util-linux | [] [] [] [] [] [] [] |
+ vorbis-tools | [] [] |
+ wastesedge | () |
+ wdiff | [] [] [] [] [] [] [] [] |
+ wget | [] [] [] [] [] [] [] [] |
+ xchat | [] [] [] [] [] [] [] [] |
+ xkeyboard-config | [] [] [] [] |
+ xpad | [] [] [] |
+ +--------------------------------------------------+
+ es et eu fa fi fr ga gl gu he hi hr hu id is it
+ 88 22 14 2 40 115 61 14 1 8 1 6 59 31 0 52
+
+ ja ko ku ky lg lt lv mk mn ms mt nb ne nl nn no
+ +-------------------------------------------------+
+ GNUnet | |
+ a2ps | () [] [] () |
+ aegis | () |
+ ant-phone | [] |
+ anubis | [] [] [] |
+ ap-utils | [] |
+ aspell | [] [] |
+ bash | [] |
+ batchelor | [] [] |
+ bfd | |
+ bibshelf | [] |
+ binutils | |
+ bison | [] [] [] |
+ bison-runtime | [] [] [] |
+ bluez-pin | [] [] [] |
+ cflow | |
+ clisp | [] |
+ console-tools | |
+ coreutils | [] |
+ cpio | |
+ cpplib | [] |
+ cryptonit | [] |
+ darkstat | [] [] |
+ dialog | [] [] |
+ diffutils | [] [] [] |
+ doodle | |
+ e2fsprogs | [] |
+ enscript | [] |
+ error | [] |
+ fetchmail | [] [] |
+ fileutils | [] [] |
+ findutils | [] |
+ flex | [] [] |
+ fslint | [] [] |
+ gas | |
+ gawk | [] [] |
+ gbiff | [] |
+ gcal | |
+ gcc | |
+ gettext-examples | [] [] |
+ gettext-runtime | [] [] [] |
+ gettext-tools | [] [] |
+ gimp-print | [] [] |
+ gip | [] [] |
+ gliv | [] |
+ glunarclock | [] [] |
+ gmult | [] [] |
+ gnubiff | |
+ gnucash | () () |
+ gnucash-glossary | [] |
+ gnuedu | |
+ gnulib | [] [] [] [] |
+ gnunet-gtk | |
+ gnutls | |
+ gpe-aerial | [] |
+ gpe-beam | [] |
+ gpe-calendar | [] |
+ gpe-clock | [] [] [] |
+ gpe-conf | [] [] |
+ gpe-contacts | [] |
+ gpe-edit | [] [] [] |
+ gpe-filemanager | [] [] |
+ gpe-go | [] [] [] |
+ gpe-login | [] [] [] |
+ gpe-ownerinfo | [] [] |
+ gpe-package | [] [] |
+ gpe-sketchbook | [] [] |
+ gpe-su | [] [] [] |
+ gpe-taskmanager | [] [] [] [] |
+ gpe-timesheet | [] |
+ gpe-today | [] [] |
+ gpe-todo | [] |
+ gphoto2 | [] [] |
+ gprof | |
+ gpsdrive | () () () |
+ gramadoir | () |
+ grep | [] [] [] [] |
+ gretl | |
+ gsasl | [] |
+ gss | |
+ gst-plugins | [] |
+ gst-plugins-base | |
+ gst-plugins-good | [] |
+ gstreamer | [] |
+ gtick | |
+ gtkam | [] |
+ gtkorphan | [] |
+ gtkspell | [] [] |
+ gutenprint | |
+ hello | [] [] [] [] [] [] |
+ id-utils | [] |
+ impost | |
+ indent | [] [] |
+ iso_3166 | [] |
+ iso_3166_2 | [] |
+ iso_4217 | [] [] [] |
+ iso_639 | [] [] |
+ jpilot | () () () |
+ jtag | |
+ jwhois | [] |
+ kbd | [] |
+ keytouch | [] |
+ keytouch-editor | |
+ keytouch-keyboa... | |
+ latrine | [] |
+ ld | |
+ leafpad | [] [] |
+ libc | [] [] [] [] [] |
+ libexif | |
+ libextractor | |
+ libgpewidget | [] |
+ libgpg-error | |
+ libgphoto2 | [] |
+ libgphoto2_port | [] |
+ libgsasl | [] |
+ libiconv | |
+ libidn | [] [] |
+ lifelines | [] |
+ lilypond | |
+ lingoteach | [] |
+ lynx | [] [] |
+ m4 | [] [] |
+ mailutils | |
+ make | [] [] [] |
+ man-db | () |
+ minicom | [] |
+ mysecretdiary | [] |
+ nano | [] [] [] |
+ nano_1_0 | [] [] [] |
+ opcodes | [] |
+ parted | [] [] |
+ pilot-qof | |
+ psmisc | [] [] [] |
+ pwdutils | |
+ python | |
+ qof | |
+ radius | |
+ recode | [] |
+ rpm | [] [] |
+ screem | [] |
+ scrollkeeper | [] [] [] [] |
+ sed | [] [] |
+ sh-utils | [] [] |
+ shared-mime-info | [] [] [] [] [] |
+ sharutils | [] [] |
+ shishi | |
+ silky | [] |
+ skencil | |
+ sketch | |
+ solfege | |
+ soundtracker | |
+ sp | () |
+ stardict | [] [] |
+ system-tools-ba... | [] [] [] [] |
+ tar | [] [] [] |
+ texinfo | [] [] [] |
+ textutils | [] [] [] |
+ tin | |
+ tp-robot | [] |
+ tuxpaint | [] |
+ unicode-han-tra... | |
+ unicode-transla... | |
+ util-linux | [] [] |
+ vorbis-tools | [] |
+ wastesedge | [] |
+ wdiff | [] [] |
+ wget | [] [] |
+ xchat | [] [] [] [] |
+ xkeyboard-config | [] |
+ xpad | [] [] [] |
+ +-------------------------------------------------+
+ ja ko ku ky lg lt lv mk mn ms mt nb ne nl nn no
+ 52 24 2 2 1 3 0 2 3 21 0 15 1 97 5 1
+
+ nso or pa pl pt pt_BR rm ro ru rw sk sl sq sr sv ta
+ +------------------------------------------------------+
+ GNUnet | |
+ a2ps | () [] [] [] [] [] [] |
+ aegis | () () |
+ ant-phone | [] [] |
+ anubis | [] [] [] |
+ ap-utils | () |
+ aspell | [] [] |
+ bash | [] [] [] |
+ batchelor | [] [] |
+ bfd | |
+ bibshelf | [] |
+ binutils | [] [] |
+ bison | [] [] [] [] [] |
+ bison-runtime | [] [] [] [] |
+ bluez-pin | [] [] [] [] [] [] [] [] [] |
+ cflow | [] |
+ clisp | [] |
+ console-tools | [] |
+ coreutils | [] [] [] [] |
+ cpio | [] [] [] |
+ cpplib | [] |
+ cryptonit | [] [] |
+ darkstat | [] [] [] [] [] [] |
+ dialog | [] [] [] [] [] [] [] [] [] |
+ diffutils | [] [] [] [] [] [] |
+ doodle | [] [] |
+ e2fsprogs | [] [] |
+ enscript | [] [] [] [] [] |
+ error | [] [] [] [] |
+ fetchmail | [] [] [] |
+ fileutils | [] [] [] [] [] |
+ findutils | [] [] [] [] [] [] |
+ flex | [] [] [] [] [] |
+ fslint | [] [] [] [] |
+ gas | |
+ gawk | [] [] [] [] |
+ gbiff | [] |
+ gcal | [] |
+ gcc | [] |
+ gettext-examples | [] [] [] [] [] [] [] [] |
+ gettext-runtime | [] [] [] [] [] [] [] [] |
+ gettext-tools | [] [] [] [] [] [] [] |
+ gimp-print | [] [] |
+ gip | [] [] [] [] |
+ gliv | [] [] [] [] |
+ glunarclock | [] [] [] [] [] [] |
+ gmult | [] [] [] [] |
+ gnubiff | () |
+ gnucash | () [] |
+ gnucash-glossary | [] [] [] |
+ gnuedu | |
+ gnulib | [] [] [] [] [] |
+ gnunet-gtk | [] |
+ gnutls | [] [] |
+ gpe-aerial | [] [] [] [] [] [] [] |
+ gpe-beam | [] [] [] [] [] [] [] |
+ gpe-calendar | [] |
+ gpe-clock | [] [] [] [] [] [] [] [] |
+ gpe-conf | [] [] [] [] [] [] [] |
+ gpe-contacts | [] [] [] [] [] |
+ gpe-edit | [] [] [] [] [] [] [] [] |
+ gpe-filemanager | [] [] |
+ gpe-go | [] [] [] [] [] [] |
+ gpe-login | [] [] [] [] [] [] [] [] |
+ gpe-ownerinfo | [] [] [] [] [] [] [] [] |
+ gpe-package | [] [] |
+ gpe-sketchbook | [] [] [] [] [] [] [] [] |
+ gpe-su | [] [] [] [] [] [] [] [] |
+ gpe-taskmanager | [] [] [] [] [] [] [] [] |
+ gpe-timesheet | [] [] [] [] [] [] [] [] |
+ gpe-today | [] [] [] [] [] [] [] [] |
+ gpe-todo | [] [] [] [] |
+ gphoto2 | [] [] [] [] [] |
+ gprof | [] [] [] |
+ gpsdrive | [] [] [] |
+ gramadoir | [] [] |
+ grep | [] [] [] [] [] [] [] [] |
+ gretl | [] |
+ gsasl | [] [] [] |
+ gss | [] [] [] |
+ gst-plugins | [] [] [] [] |
+ gst-plugins-base | [] |
+ gst-plugins-good | [] [] [] [] |
+ gstreamer | [] [] [] |
+ gtick | [] |
+ gtkam | [] [] [] [] |
+ gtkorphan | [] |
+ gtkspell | [] [] [] [] [] [] [] [] |
+ gutenprint | [] |
+ hello | [] [] [] [] [] [] [] [] |
+ id-utils | [] [] [] [] |
+ impost | [] |
+ indent | [] [] [] [] [] [] |
+ iso_3166 | [] [] [] [] [] [] |
+ iso_3166_2 | |
+ iso_4217 | [] [] [] [] |
+ iso_639 | [] [] [] [] |
+ jpilot | |
+ jtag | [] |
+ jwhois | [] [] [] [] |
+ kbd | [] [] [] |
+ keytouch | [] |
+ keytouch-editor | [] |
+ keytouch-keyboa... | [] |
+ latrine | [] [] |
+ ld | [] |
+ leafpad | [] [] [] [] [] [] |
+ libc | [] [] [] [] [] |
+ libexif | [] |
+ libextractor | [] [] |
+ libgpewidget | [] [] [] [] [] [] [] |
+ libgpg-error | [] [] |
+ libgphoto2 | [] |
+ libgphoto2_port | [] [] [] |
+ libgsasl | [] [] [] [] |
+ libiconv | [] [] |
+ libidn | [] [] () |
+ lifelines | [] [] |
+ lilypond | |
+ lingoteach | [] |
+ lynx | [] [] [] |
+ m4 | [] [] [] [] [] |
+ mailutils | [] [] [] [] |
+ make | [] [] [] [] |
+ man-db | [] [] |
+ minicom | [] [] [] [] [] |
+ mysecretdiary | [] [] [] [] |
+ nano | [] [] [] |
+ nano_1_0 | [] [] [] [] |
+ opcodes | [] [] |
+ parted | [] |
+ pilot-qof | [] |
+ psmisc | [] [] |
+ pwdutils | [] [] |
+ python | |
+ qof | [] [] |
+ radius | [] [] |
+ recode | [] [] [] [] [] [] [] |
+ rpm | [] [] [] [] |
+ screem | |
+ scrollkeeper | [] [] [] [] [] [] [] |
+ sed | [] [] [] [] [] [] [] [] [] |
+ sh-utils | [] [] [] |
+ shared-mime-info | [] [] [] [] [] |
+ sharutils | [] [] [] [] |
+ shishi | [] |
+ silky | [] |
+ skencil | [] [] [] |
+ sketch | [] [] [] |
+ solfege | [] |
+ soundtracker | [] [] |
+ sp | |
+ stardict | [] [] [] |
+ system-tools-ba... | [] [] [] [] [] [] [] [] [] |
+ tar | [] [] [] [] [] |
+ texinfo | [] [] [] [] |
+ textutils | [] [] [] |
+ tin | () |
+ tp-robot | [] |
+ tuxpaint | [] [] [] [] [] |
+ unicode-han-tra... | |
+ unicode-transla... | |
+ util-linux | [] [] [] [] |
+ vorbis-tools | [] [] |
+ wastesedge | |
+ wdiff | [] [] [] [] [] [] |
+ wget | [] [] [] [] |
+ xchat | [] [] [] [] [] [] [] |
+ xkeyboard-config | [] [] |
+ xpad | [] [] [] |
+ +------------------------------------------------------+
+ nso or pa pl pt pt_BR rm ro ru rw sk sl sq sr sv ta
+ 0 2 3 58 30 54 5 73 72 4 40 46 11 50 128 2
+
+ tg th tk tr uk ven vi wa xh zh_CN zh_HK zh_TW zu
+ +---------------------------------------------------+
+ GNUnet | [] | 2
+ a2ps | [] [] [] | 19
+ aegis | | 0
+ ant-phone | [] [] | 6
+ anubis | [] [] [] | 11
+ ap-utils | () [] | 4
+ aspell | [] [] [] | 15
+ bash | [] | 11
+ batchelor | [] [] | 9
+ bfd | | 1
+ bibshelf | [] | 7
+ binutils | [] [] [] | 9
+ bison | [] [] [] | 19
+ bison-runtime | [] [] [] | 15
+ bluez-pin | [] [] [] [] [] [] | 28
+ cflow | [] [] | 5
+ clisp | | 6
+ console-tools | [] [] | 5
+ coreutils | [] [] | 16
+ cpio | [] [] [] | 9
+ cpplib | [] [] [] [] | 11
+ cryptonit | | 5
+ darkstat | [] () () | 15
+ dialog | [] [] [] [] [] | 30
+ diffutils | [] [] [] [] | 28
+ doodle | [] | 6
+ e2fsprogs | [] [] | 10
+ enscript | [] [] [] | 16
+ error | [] [] [] [] | 18
+ fetchmail | [] [] | 12
+ fileutils | [] [] [] | 18
+ findutils | [] [] [] | 17
+ flex | [] [] | 15
+ fslint | [] | 9
+ gas | [] | 3
+ gawk | [] [] | 15
+ gbiff | [] | 5
+ gcal | [] | 5
+ gcc | [] [] [] | 6
+ gettext-examples | [] [] [] [] [] [] | 27
+ gettext-runtime | [] [] [] [] [] [] | 28
+ gettext-tools | [] [] [] [] [] | 19
+ gimp-print | [] [] | 12
+ gip | [] [] | 12
+ gliv | [] [] | 8
+ glunarclock | [] [] [] | 15
+ gmult | [] [] [] [] | 15
+ gnubiff | [] | 1
+ gnucash | () | 2
+ gnucash-glossary | [] [] | 9
+ gnuedu | [] | 2
+ gnulib | [] [] [] [] [] | 28
+ gnunet-gtk | | 1
+ gnutls | | 2
+ gpe-aerial | [] [] | 14
+ gpe-beam | [] [] | 14
+ gpe-calendar | [] | 3
+ gpe-clock | [] [] [] [] | 21
+ gpe-conf | [] [] | 14
+ gpe-contacts | [] [] | 10
+ gpe-edit | [] [] [] [] | 20
+ gpe-filemanager | [] | 6
+ gpe-go | [] [] | 15
+ gpe-login | [] [] [] [] [] | 21
+ gpe-ownerinfo | [] [] [] [] | 21
+ gpe-package | [] | 6
+ gpe-sketchbook | [] [] | 16
+ gpe-su | [] [] [] | 20
+ gpe-taskmanager | [] [] [] | 20
+ gpe-timesheet | [] [] [] [] | 18
+ gpe-today | [] [] [] [] [] | 21
+ gpe-todo | [] | 7
+ gphoto2 | [] [] [] [] | 20
+ gprof | [] [] | 11
+ gpsdrive | | 4
+ gramadoir | [] | 7
+ grep | [] [] [] [] | 34
+ gretl | | 4
+ gsasl | [] [] | 8
+ gss | [] | 5
+ gst-plugins | [] [] [] | 15
+ gst-plugins-base | [] [] [] | 9
+ gst-plugins-good | [] [] [] [] [] | 20
+ gstreamer | [] [] [] | 17
+ gtick | [] | 3
+ gtkam | [] | 13
+ gtkorphan | [] | 7
+ gtkspell | [] [] [] [] [] [] | 26
+ gutenprint | | 3
+ hello | [] [] [] [] [] | 37
+ id-utils | [] [] | 14
+ impost | [] | 4
+ indent | [] [] [] [] | 25
+ iso_3166 | [] [] [] [] | 16
+ iso_3166_2 | | 2
+ iso_4217 | [] [] | 14
+ iso_639 | [] | 14
+ jpilot | [] [] [] [] | 7
+ jtag | [] | 3
+ jwhois | [] [] [] | 13
+ kbd | [] [] | 12
+ keytouch | [] | 4
+ keytouch-editor | | 2
+ keytouch-keyboa... | [] | 3
+ latrine | [] [] | 8
+ ld | [] [] [] [] | 8
+ leafpad | [] [] [] [] | 23
+ libc | [] [] [] | 23
+ libexif | [] | 4
+ libextractor | [] | 5
+ libgpewidget | [] [] [] | 19
+ libgpg-error | [] | 4
+ libgphoto2 | [] | 8
+ libgphoto2_port | [] [] [] | 11
+ libgsasl | [] | 8
+ libiconv | [] | 7
+ libidn | [] [] | 10
+ lifelines | | 4
+ lilypond | | 2
+ lingoteach | [] | 6
+ lynx | [] [] [] | 15
+ m4 | [] [] [] | 18
+ mailutils | [] | 8
+ make | [] [] [] | 20
+ man-db | [] | 6
+ minicom | [] | 14
+ mysecretdiary | [] [] | 12
+ nano | [] [] | 17
+ nano_1_0 | [] [] [] | 18
+ opcodes | [] [] | 10
+ parted | [] [] [] | 10
+ pilot-qof | [] | 3
+ psmisc | [] | 10
+ pwdutils | [] | 3
+ python | | 0
+ qof | [] | 4
+ radius | [] | 6
+ recode | [] [] [] | 25
+ rpm | [] [] [] [] | 14
+ screem | [] | 2
+ scrollkeeper | [] [] [] [] | 26
+ sed | [] [] [] | 22
+ sh-utils | [] | 15
+ shared-mime-info | [] [] [] [] | 24
+ sharutils | [] [] [] | 23
+ shishi | | 1
+ silky | [] | 4
+ skencil | [] | 7
+ sketch | | 6
+ solfege | | 2
+ soundtracker | [] [] | 9
+ sp | [] | 3
+ stardict | [] [] [] [] | 11
+ system-tools-ba... | [] [] [] [] [] [] [] | 37
+ tar | [] [] [] [] | 20
+ texinfo | [] [] [] | 15
+ textutils | [] [] [] | 17
+ tin | | 1
+ tp-robot | [] [] [] | 10
+ tuxpaint | [] [] [] | 16
+ unicode-han-tra... | | 0
+ unicode-transla... | | 2
+ util-linux | [] [] [] | 20
+ vorbis-tools | [] [] | 11
+ wastesedge | | 1
+ wdiff | [] [] | 22
+ wget | [] [] [] | 19
+ xchat | [] [] [] [] | 29
+ xkeyboard-config | [] [] [] [] | 11
+ xpad | [] [] [] | 14
+ +---------------------------------------------------+
+ 77 teams tg th tk tr uk ven vi wa xh zh_CN zh_HK zh_TW zu
+ 170 domains 0 1 1 77 39 0 136 10 1 48 5 54 0 2028
+
+ Some counters in the preceding matrix are higher than the number of
+visible blocks let us expect. This is because a few extra PO files are
+used for implementing regional variants of languages, or language
+dialects.
+
+ For a PO file in the matrix above to be effective, the package to
+which it applies should also have been internationalized and
+distributed as such by its maintainer. There might be an observable
+lag between the mere existence a PO file and its wide availability in a
+distribution.
+
+ If October 2006 seems to be old, you may fetch a more recent copy of
+this `ABOUT-NLS' file on most GNU archive sites. The most up-to-date
+matrix with full percentage details can be found at
+`http://www.iro.umontreal.ca/contrib/po/HTML/matrix.html'.
+
+1.6 Using `gettext' in new packages
+===================================
+
+If you are writing a freely available program and want to
+internationalize it you are welcome to use GNU `gettext' in your
+package. Of course you have to respect the GNU Library General Public
+License which covers the use of the GNU `gettext' library. This means
+in particular that even non-free programs can use `libintl' as a shared
+library, whereas only free software can use `libintl' as a static
+library or use modified versions of `libintl'.
+
+ Once the sources are changed appropriately and the setup can handle
+the use of `gettext' the only thing missing are the translations. The
+Free Translation Project is also available for packages which are not
+developed inside the GNU project. Therefore the information given above
+applies also for every other Free Software Project. Contact
+`translation@iro.umontreal.ca' to make the `.pot' files available to
+the translation teams.
+
diff --git a/AUTHORS b/AUTHORS
new file mode 100644
index 000000000..950320941
--- /dev/null
+++ b/AUTHORS
@@ -0,0 +1,85 @@
+Primary developers (0.9.x series):
+Christian Grothoff <christian@grothoff.org>
+Heikki Lindholm <holindho@cs.helsinki.fi>
+Nils Durner <durner@gnunet.org>
+Milan Bouchet-Valat <nalimilan@club.fr>
+
+Code contributions also came from:
+Adam Warrington [ UPnP ]
+Alex Harper [ OS X CPU load ]
+Andrew McDonald <andrew@mcdonald.org.uk> [ SHA-512]
+Antti Salonen
+Blake Matheny <bmatheny@mobocracy.net>
+Clytie Siddall <clytie@riverland.net.au>
+David Kuehling <dvdkhlng@gmx.de>
+Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+Eric Haumant
+Eric Noack <corvus-gnunet@cybertrench.com>
+Felix von Leitner [ diet libc snprintf for win32 ]
+Gerd Knorr <kraxel@bytesex.org>
+Glenn McGrath <bug1@iinet.net.au>
+Hendrik Pagenhardt <Hendrik.Pagenhardt@gmx.net>
+Heikki Lindholm <holindho@cs.helsinki.fi>
+Igor Wronsky <iwronsky@users.sourceforge.net>
+Ioana Patrascu <ioanapatrascu@yahoo.com>
+<january@hushmail.com>
+Jake Dust <jakedust@gmail.com>
+James Blackwell <jblack@linuxguru.net>
+Jean-Luc Cooke <jlcooke@certainkey.com> [ SHA-512]
+Jussi Eloranta <eloranta@cc.jyu.fi>
+JŘrgen Appel <jappel@linux01.gwdg.de>
+Kevin Vandersloot <kfv101@psu.edu> [original code of gnome-system-monitor]
+Krista Bennett Grothoff <krista@grothoff.org>
+Kyle McMartin <kyle@debian.org> [ SHA-512]
+Larry Waldo
+Ludovic CourtŔs <ludo@chbouib.org>
+Marko Rńihń
+Michael John Wensley <michael@wensley.org.uk>
+Nathan Evans <nevans6@du.edu>
+Paul Ruth <ruth@cs.purdue.edu>
+Renaldo Ferreira <rf@cs.purdue.edu>
+Risto Saarelma
+Roman Zippel
+Romain Lievin
+sheda <uc.sheda@laposte.net>
+Simo Viitanen
+Tiberius Stef <tstef@cs.purdue.edu>
+Tomi Tukiainen
+Tuomas Toivonen
+Tzvetan Horozov <chorozov@gmail.com>
+Uli Luckas <luckas@musoft.de>
+Vasil Dimov <vd@datamax.bg>
+Werner Koch <libgcrypt@g10code.com> [original code of libgcrypt]
+
+Translations (webpage, documentation, as far as known):
+Chinese : Di Ma
+Danish : Jens Palsberg <palsberg@cs.ucla.edu>
+Deutsch : Christian Grothoff <christian@grothoff.org>,
+ Nils Durner <durner@gnunet.org>
+French : Mathieu <mollo@bghflt.org>,
+ Eric Haumant
+ Milan <nalimilan@club-internet.fr>
+Japanese : Hiroshi Yamauchi <yamauchi@cs.purdue.edu>
+Polish : Adam Welc <welc@cs.purdue.edu>
+Romaneste : Bogdan Carbunar <carbunar@cs.purdue.edu>
+Kinyarwanda: Steven Michael Murphy <murf@e-tools.com>
+Vietnamese : Phan Vinh Thinh <teppi82@gmail.com> and Clytie Siddall <clytie@riverland.net.au>
+Swedish : Daniel Nylander <po@danielnylander.se>
+Spanish : Miguel Angel Arruga Vivas <miguel.13@telefonica.net>
+Turkish : NilgŘn Belma BugŘner <nilgun@buguner.name.tr>
+
+Logos:
+GNU in Net : Christian Muellner <chris@flop.de>
+GNU with Net : Christian Muellner <chris@flop.de>
+AFS Face : Alex Jones <alexrjones@ntlworld.com>
+new GNU in Net: Nicklas Larsson <whybill@gmail.com>
+
+Maintainers:
+FreeBSD : Kirill Ponomarew <ponomarew@oberon.net>
+Debian GNU/Linux: Daniel Baumann <daniel.baumann@panthera-systems.net> and
+ Arnaud Kyheng <Arnaud.Kyheng@free.fr>
+OS X : Jussi Eloranta <eloranta@cc.jyu.fi>
+
+
+If you have contributed and are not listed here, please
+notify one of the maintainers in order to be added.
diff --git a/COPYING b/COPYING
new file mode 100644
index 000000000..94a9ed024
--- /dev/null
+++ b/COPYING
@@ -0,0 +1,674 @@
+ GNU GENERAL PUBLIC LICENSE
+ Version 3, 29 June 2007
+
+ Copyright (C) 2007 Free Software Foundation, Inc. <http://fsf.org/>
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+ Preamble
+
+ The GNU General Public License is a free, copyleft license for
+software and other kinds of works.
+
+ The licenses for most software and other practical works are designed
+to take away your freedom to share and change the works. By contrast,
+the GNU General Public License is intended to guarantee your freedom to
+share and change all versions of a program--to make sure it remains free
+software for all its users. We, the Free Software Foundation, use the
+GNU General Public License for most of our software; it applies also to
+any other work released this way by its authors. You can apply it to
+your programs, too.
+
+ When we speak of free software, we are referring to freedom, not
+price. Our General Public Licenses are designed to make sure that you
+have the freedom to distribute copies of free software (and charge for
+them if you wish), that you receive source code or can get it if you
+want it, that you can change the software or use pieces of it in new
+free programs, and that you know you can do these things.
+
+ To protect your rights, we need to prevent others from denying you
+these rights or asking you to surrender the rights. Therefore, you have
+certain responsibilities if you distribute copies of the software, or if
+you modify it: responsibilities to respect the freedom of others.
+
+ For example, if you distribute copies of such a program, whether
+gratis or for a fee, you must pass on to the recipients the same
+freedoms that you received. You must make sure that they, too, receive
+or can get the source code. And you must show them these terms so they
+know their rights.
+
+ Developers that use the GNU GPL protect your rights with two steps:
+(1) assert copyright on the software, and (2) offer you this License
+giving you legal permission to copy, distribute and/or modify it.
+
+ For the developers' and authors' protection, the GPL clearly explains
+that there is no warranty for this free software. For both users' and
+authors' sake, the GPL requires that modified versions be marked as
+changed, so that their problems will not be attributed erroneously to
+authors of previous versions.
+
+ Some devices are designed to deny users access to install or run
+modified versions of the software inside them, although the manufacturer
+can do so. This is fundamentally incompatible with the aim of
+protecting users' freedom to change the software. The systematic
+pattern of such abuse occurs in the area of products for individuals to
+use, which is precisely where it is most unacceptable. Therefore, we
+have designed this version of the GPL to prohibit the practice for those
+products. If such problems arise substantially in other domains, we
+stand ready to extend this provision to those domains in future versions
+of the GPL, as needed to protect the freedom of users.
+
+ Finally, every program is threatened constantly by software patents.
+States should not allow patents to restrict development and use of
+software on general-purpose computers, but in those that do, we wish to
+avoid the special danger that patents applied to a free program could
+make it effectively proprietary. To prevent this, the GPL assures that
+patents cannot be used to render the program non-free.
+
+ The precise terms and conditions for copying, distribution and
+modification follow.
+
+ TERMS AND CONDITIONS
+
+ 0. Definitions.
+
+ "This License" refers to version 3 of the GNU General Public License.
+
+ "Copyright" also means copyright-like laws that apply to other kinds of
+works, such as semiconductor masks.
+
+ "The Program" refers to any copyrightable work licensed under this
+License. Each licensee is addressed as "you". "Licensees" and
+"recipients" may be individuals or organizations.
+
+ To "modify" a work means to copy from or adapt all or part of the work
+in a fashion requiring copyright permission, other than the making of an
+exact copy. The resulting work is called a "modified version" of the
+earlier work or a work "based on" the earlier work.
+
+ A "covered work" means either the unmodified Program or a work based
+on the Program.
+
+ To "propagate" a work means to do anything with it that, without
+permission, would make you directly or secondarily liable for
+infringement under applicable copyright law, except executing it on a
+computer or modifying a private copy. Propagation includes copying,
+distribution (with or without modification), making available to the
+public, and in some countries other activities as well.
+
+ To "convey" a work means any kind of propagation that enables other
+parties to make or receive copies. Mere interaction with a user through
+a computer network, with no transfer of a copy, is not conveying.
+
+ An interactive user interface displays "Appropriate Legal Notices"
+to the extent that it includes a convenient and prominently visible
+feature that (1) displays an appropriate copyright notice, and (2)
+tells the user that there is no warranty for the work (except to the
+extent that warranties are provided), that licensees may convey the
+work under this License, and how to view a copy of this License. If
+the interface presents a list of user commands or options, such as a
+menu, a prominent item in the list meets this criterion.
+
+ 1. Source Code.
+
+ The "source code" for a work means the preferred form of the work
+for making modifications to it. "Object code" means any non-source
+form of a work.
+
+ A "Standard Interface" means an interface that either is an official
+standard defined by a recognized standards body, or, in the case of
+interfaces specified for a particular programming language, one that
+is widely used among developers working in that language.
+
+ The "System Libraries" of an executable work include anything, other
+than the work as a whole, that (a) is included in the normal form of
+packaging a Major Component, but which is not part of that Major
+Component, and (b) serves only to enable use of the work with that
+Major Component, or to implement a Standard Interface for which an
+implementation is available to the public in source code form. A
+"Major Component", in this context, means a major essential component
+(kernel, window system, and so on) of the specific operating system
+(if any) on which the executable work runs, or a compiler used to
+produce the work, or an object code interpreter used to run it.
+
+ The "Corresponding Source" for a work in object code form means all
+the source code needed to generate, install, and (for an executable
+work) run the object code and to modify the work, including scripts to
+control those activities. However, it does not include the work's
+System Libraries, or general-purpose tools or generally available free
+programs which are used unmodified in performing those activities but
+which are not part of the work. For example, Corresponding Source
+includes interface definition files associated with source files for
+the work, and the source code for shared libraries and dynamically
+linked subprograms that the work is specifically designed to require,
+such as by intimate data communication or control flow between those
+subprograms and other parts of the work.
+
+ The Corresponding Source need not include anything that users
+can regenerate automatically from other parts of the Corresponding
+Source.
+
+ The Corresponding Source for a work in source code form is that
+same work.
+
+ 2. Basic Permissions.
+
+ All rights granted under this License are granted for the term of
+copyright on the Program, and are irrevocable provided the stated
+conditions are met. This License explicitly affirms your unlimited
+permission to run the unmodified Program. The output from running a
+covered work is covered by this License only if the output, given its
+content, constitutes a covered work. This License acknowledges your
+rights of fair use or other equivalent, as provided by copyright law.
+
+ You may make, run and propagate covered works that you do not
+convey, without conditions so long as your license otherwise remains
+in force. You may convey covered works to others for the sole purpose
+of having them make modifications exclusively for you, or provide you
+with facilities for running those works, provided that you comply with
+the terms of this License in conveying all material for which you do
+not control copyright. Those thus making or running the covered works
+for you must do so exclusively on your behalf, under your direction
+and control, on terms that prohibit them from making any copies of
+your copyrighted material outside their relationship with you.
+
+ Conveying under any other circumstances is permitted solely under
+the conditions stated below. Sublicensing is not allowed; section 10
+makes it unnecessary.
+
+ 3. Protecting Users' Legal Rights From Anti-Circumvention Law.
+
+ No covered work shall be deemed part of an effective technological
+measure under any applicable law fulfilling obligations under article
+11 of the WIPO copyright treaty adopted on 20 December 1996, or
+similar laws prohibiting or restricting circumvention of such
+measures.
+
+ When you convey a covered work, you waive any legal power to forbid
+circumvention of technological measures to the extent such circumvention
+is effected by exercising rights under this License with respect to
+the covered work, and you disclaim any intention to limit operation or
+modification of the work as a means of enforcing, against the work's
+users, your or third parties' legal rights to forbid circumvention of
+technological measures.
+
+ 4. Conveying Verbatim Copies.
+
+ You may convey verbatim copies of the Program's source code as you
+receive it, in any medium, provided that you conspicuously and
+appropriately publish on each copy an appropriate copyright notice;
+keep intact all notices stating that this License and any
+non-permissive terms added in accord with section 7 apply to the code;
+keep intact all notices of the absence of any warranty; and give all
+recipients a copy of this License along with the Program.
+
+ You may charge any price or no price for each copy that you convey,
+and you may offer support or warranty protection for a fee.
+
+ 5. Conveying Modified Source Versions.
+
+ You may convey a work based on the Program, or the modifications to
+produce it from the Program, in the form of source code under the
+terms of section 4, provided that you also meet all of these conditions:
+
+ a) The work must carry prominent notices stating that you modified
+ it, and giving a relevant date.
+
+ b) The work must carry prominent notices stating that it is
+ released under this License and any conditions added under section
+ 7. This requirement modifies the requirement in section 4 to
+ "keep intact all notices".
+
+ c) You must license the entire work, as a whole, under this
+ License to anyone who comes into possession of a copy. This
+ License will therefore apply, along with any applicable section 7
+ additional terms, to the whole of the work, and all its parts,
+ regardless of how they are packaged. This License gives no
+ permission to license the work in any other way, but it does not
+ invalidate such permission if you have separately received it.
+
+ d) If the work has interactive user interfaces, each must display
+ Appropriate Legal Notices; however, if the Program has interactive
+ interfaces that do not display Appropriate Legal Notices, your
+ work need not make them do so.
+
+ A compilation of a covered work with other separate and independent
+works, which are not by their nature extensions of the covered work,
+and which are not combined with it such as to form a larger program,
+in or on a volume of a storage or distribution medium, is called an
+"aggregate" if the compilation and its resulting copyright are not
+used to limit the access or legal rights of the compilation's users
+beyond what the individual works permit. Inclusion of a covered work
+in an aggregate does not cause this License to apply to the other
+parts of the aggregate.
+
+ 6. Conveying Non-Source Forms.
+
+ You may convey a covered work in object code form under the terms
+of sections 4 and 5, provided that you also convey the
+machine-readable Corresponding Source under the terms of this License,
+in one of these ways:
+
+ a) Convey the object code in, or embodied in, a physical product
+ (including a physical distribution medium), accompanied by the
+ Corresponding Source fixed on a durable physical medium
+ customarily used for software interchange.
+
+ b) Convey the object code in, or embodied in, a physical product
+ (including a physical distribution medium), accompanied by a
+ written offer, valid for at least three years and valid for as
+ long as you offer spare parts or customer support for that product
+ model, to give anyone who possesses the object code either (1) a
+ copy of the Corresponding Source for all the software in the
+ product that is covered by this License, on a durable physical
+ medium customarily used for software interchange, for a price no
+ more than your reasonable cost of physically performing this
+ conveying of source, or (2) access to copy the
+ Corresponding Source from a network server at no charge.
+
+ c) Convey individual copies of the object code with a copy of the
+ written offer to provide the Corresponding Source. This
+ alternative is allowed only occasionally and noncommercially, and
+ only if you received the object code with such an offer, in accord
+ with subsection 6b.
+
+ d) Convey the object code by offering access from a designated
+ place (gratis or for a charge), and offer equivalent access to the
+ Corresponding Source in the same way through the same place at no
+ further charge. You need not require recipients to copy the
+ Corresponding Source along with the object code. If the place to
+ copy the object code is a network server, the Corresponding Source
+ may be on a different server (operated by you or a third party)
+ that supports equivalent copying facilities, provided you maintain
+ clear directions next to the object code saying where to find the
+ Corresponding Source. Regardless of what server hosts the
+ Corresponding Source, you remain obligated to ensure that it is
+ available for as long as needed to satisfy these requirements.
+
+ e) Convey the object code using peer-to-peer transmission, provided
+ you inform other peers where the object code and Corresponding
+ Source of the work are being offered to the general public at no
+ charge under subsection 6d.
+
+ A separable portion of the object code, whose source code is excluded
+from the Corresponding Source as a System Library, need not be
+included in conveying the object code work.
+
+ A "User Product" is either (1) a "consumer product", which means any
+tangible personal property which is normally used for personal, family,
+or household purposes, or (2) anything designed or sold for incorporation
+into a dwelling. In determining whether a product is a consumer product,
+doubtful cases shall be resolved in favor of coverage. For a particular
+product received by a particular user, "normally used" refers to a
+typical or common use of that class of product, regardless of the status
+of the particular user or of the way in which the particular user
+actually uses, or expects or is expected to use, the product. A product
+is a consumer product regardless of whether the product has substantial
+commercial, industrial or non-consumer uses, unless such uses represent
+the only significant mode of use of the product.
+
+ "Installation Information" for a User Product means any methods,
+procedures, authorization keys, or other information required to install
+and execute modified versions of a covered work in that User Product from
+a modified version of its Corresponding Source. The information must
+suffice to ensure that the continued functioning of the modified object
+code is in no case prevented or interfered with solely because
+modification has been made.
+
+ If you convey an object code work under this section in, or with, or
+specifically for use in, a User Product, and the conveying occurs as
+part of a transaction in which the right of possession and use of the
+User Product is transferred to the recipient in perpetuity or for a
+fixed term (regardless of how the transaction is characterized), the
+Corresponding Source conveyed under this section must be accompanied
+by the Installation Information. But this requirement does not apply
+if neither you nor any third party retains the ability to install
+modified object code on the User Product (for example, the work has
+been installed in ROM).
+
+ The requirement to provide Installation Information does not include a
+requirement to continue to provide support service, warranty, or updates
+for a work that has been modified or installed by the recipient, or for
+the User Product in which it has been modified or installed. Access to a
+network may be denied when the modification itself materially and
+adversely affects the operation of the network or violates the rules and
+protocols for communication across the network.
+
+ Corresponding Source conveyed, and Installation Information provided,
+in accord with this section must be in a format that is publicly
+documented (and with an implementation available to the public in
+source code form), and must require no special password or key for
+unpacking, reading or copying.
+
+ 7. Additional Terms.
+
+ "Additional permissions" are terms that supplement the terms of this
+License by making exceptions from one or more of its conditions.
+Additional permissions that are applicable to the entire Program shall
+be treated as though they were included in this License, to the extent
+that they are valid under applicable law. If additional permissions
+apply only to part of the Program, that part may be used separately
+under those permissions, but the entire Program remains governed by
+this License without regard to the additional permissions.
+
+ When you convey a copy of a covered work, you may at your option
+remove any additional permissions from that copy, or from any part of
+it. (Additional permissions may be written to require their own
+removal in certain cases when you modify the work.) You may place
+additional permissions on material, added by you to a covered work,
+for which you have or can give appropriate copyright permission.
+
+ Notwithstanding any other provision of this License, for material you
+add to a covered work, you may (if authorized by the copyright holders of
+that material) supplement the terms of this License with terms:
+
+ a) Disclaiming warranty or limiting liability differently from the
+ terms of sections 15 and 16 of this License; or
+
+ b) Requiring preservation of specified reasonable legal notices or
+ author attributions in that material or in the Appropriate Legal
+ Notices displayed by works containing it; or
+
+ c) Prohibiting misrepresentation of the origin of that material, or
+ requiring that modified versions of such material be marked in
+ reasonable ways as different from the original version; or
+
+ d) Limiting the use for publicity purposes of names of licensors or
+ authors of the material; or
+
+ e) Declining to grant rights under trademark law for use of some
+ trade names, trademarks, or service marks; or
+
+ f) Requiring indemnification of licensors and authors of that
+ material by anyone who conveys the material (or modified versions of
+ it) with contractual assumptions of liability to the recipient, for
+ any liability that these contractual assumptions directly impose on
+ those licensors and authors.
+
+ All other non-permissive additional terms are considered "further
+restrictions" within the meaning of section 10. If the Program as you
+received it, or any part of it, contains a notice stating that it is
+governed by this License along with a term that is a further
+restriction, you may remove that term. If a license document contains
+a further restriction but permits relicensing or conveying under this
+License, you may add to a covered work material governed by the terms
+of that license document, provided that the further restriction does
+not survive such relicensing or conveying.
+
+ If you add terms to a covered work in accord with this section, you
+must place, in the relevant source files, a statement of the
+additional terms that apply to those files, or a notice indicating
+where to find the applicable terms.
+
+ Additional terms, permissive or non-permissive, may be stated in the
+form of a separately written license, or stated as exceptions;
+the above requirements apply either way.
+
+ 8. Termination.
+
+ You may not propagate or modify a covered work except as expressly
+provided under this License. Any attempt otherwise to propagate or
+modify it is void, and will automatically terminate your rights under
+this License (including any patent licenses granted under the third
+paragraph of section 11).
+
+ However, if you cease all violation of this License, then your
+license from a particular copyright holder is reinstated (a)
+provisionally, unless and until the copyright holder explicitly and
+finally terminates your license, and (b) permanently, if the copyright
+holder fails to notify you of the violation by some reasonable means
+prior to 60 days after the cessation.
+
+ Moreover, your license from a particular copyright holder is
+reinstated permanently if the copyright holder notifies you of the
+violation by some reasonable means, this is the first time you have
+received notice of violation of this License (for any work) from that
+copyright holder, and you cure the violation prior to 30 days after
+your receipt of the notice.
+
+ Termination of your rights under this section does not terminate the
+licenses of parties who have received copies or rights from you under
+this License. If your rights have been terminated and not permanently
+reinstated, you do not qualify to receive new licenses for the same
+material under section 10.
+
+ 9. Acceptance Not Required for Having Copies.
+
+ You are not required to accept this License in order to receive or
+run a copy of the Program. Ancillary propagation of a covered work
+occurring solely as a consequence of using peer-to-peer transmission
+to receive a copy likewise does not require acceptance. However,
+nothing other than this License grants you permission to propagate or
+modify any covered work. These actions infringe copyright if you do
+not accept this License. Therefore, by modifying or propagating a
+covered work, you indicate your acceptance of this License to do so.
+
+ 10. Automatic Licensing of Downstream Recipients.
+
+ Each time you convey a covered work, the recipient automatically
+receives a license from the original licensors, to run, modify and
+propagate that work, subject to this License. You are not responsible
+for enforcing compliance by third parties with this License.
+
+ An "entity transaction" is a transaction transferring control of an
+organization, or substantially all assets of one, or subdividing an
+organization, or merging organizations. If propagation of a covered
+work results from an entity transaction, each party to that
+transaction who receives a copy of the work also receives whatever
+licenses to the work the party's predecessor in interest had or could
+give under the previous paragraph, plus a right to possession of the
+Corresponding Source of the work from the predecessor in interest, if
+the predecessor has it or can get it with reasonable efforts.
+
+ You may not impose any further restrictions on the exercise of the
+rights granted or affirmed under this License. For example, you may
+not impose a license fee, royalty, or other charge for exercise of
+rights granted under this License, and you may not initiate litigation
+(including a cross-claim or counterclaim in a lawsuit) alleging that
+any patent claim is infringed by making, using, selling, offering for
+sale, or importing the Program or any portion of it.
+
+ 11. Patents.
+
+ A "contributor" is a copyright holder who authorizes use under this
+License of the Program or a work on which the Program is based. The
+work thus licensed is called the contributor's "contributor version".
+
+ A contributor's "essential patent claims" are all patent claims
+owned or controlled by the contributor, whether already acquired or
+hereafter acquired, that would be infringed by some manner, permitted
+by this License, of making, using, or selling its contributor version,
+but do not include claims that would be infringed only as a
+consequence of further modification of the contributor version. For
+purposes of this definition, "control" includes the right to grant
+patent sublicenses in a manner consistent with the requirements of
+this License.
+
+ Each contributor grants you a non-exclusive, worldwide, royalty-free
+patent license under the contributor's essential patent claims, to
+make, use, sell, offer for sale, import and otherwise run, modify and
+propagate the contents of its contributor version.
+
+ In the following three paragraphs, a "patent license" is any express
+agreement or commitment, however denominated, not to enforce a patent
+(such as an express permission to practice a patent or covenant not to
+sue for patent infringement). To "grant" such a patent license to a
+party means to make such an agreement or commitment not to enforce a
+patent against the party.
+
+ If you convey a covered work, knowingly relying on a patent license,
+and the Corresponding Source of the work is not available for anyone
+to copy, free of charge and under the terms of this License, through a
+publicly available network server or other readily accessible means,
+then you must either (1) cause the Corresponding Source to be so
+available, or (2) arrange to deprive yourself of the benefit of the
+patent license for this particular work, or (3) arrange, in a manner
+consistent with the requirements of this License, to extend the patent
+license to downstream recipients. "Knowingly relying" means you have
+actual knowledge that, but for the patent license, your conveying the
+covered work in a country, or your recipient's use of the covered work
+in a country, would infringe one or more identifiable patents in that
+country that you have reason to believe are valid.
+
+ If, pursuant to or in connection with a single transaction or
+arrangement, you convey, or propagate by procuring conveyance of, a
+covered work, and grant a patent license to some of the parties
+receiving the covered work authorizing them to use, propagate, modify
+or convey a specific copy of the covered work, then the patent license
+you grant is automatically extended to all recipients of the covered
+work and works based on it.
+
+ A patent license is "discriminatory" if it does not include within
+the scope of its coverage, prohibits the exercise of, or is
+conditioned on the non-exercise of one or more of the rights that are
+specifically granted under this License. You may not convey a covered
+work if you are a party to an arrangement with a third party that is
+in the business of distributing software, under which you make payment
+to the third party based on the extent of your activity of conveying
+the work, and under which the third party grants, to any of the
+parties who would receive the covered work from you, a discriminatory
+patent license (a) in connection with copies of the covered work
+conveyed by you (or copies made from those copies), or (b) primarily
+for and in connection with specific products or compilations that
+contain the covered work, unless you entered into that arrangement,
+or that patent license was granted, prior to 28 March 2007.
+
+ Nothing in this License shall be construed as excluding or limiting
+any implied license or other defenses to infringement that may
+otherwise be available to you under applicable patent law.
+
+ 12. No Surrender of Others' Freedom.
+
+ If conditions are imposed on you (whether by court order, agreement or
+otherwise) that contradict the conditions of this License, they do not
+excuse you from the conditions of this License. If you cannot convey a
+covered work so as to satisfy simultaneously your obligations under this
+License and any other pertinent obligations, then as a consequence you may
+not convey it at all. For example, if you agree to terms that obligate you
+to collect a royalty for further conveying from those to whom you convey
+the Program, the only way you could satisfy both those terms and this
+License would be to refrain entirely from conveying the Program.
+
+ 13. Use with the GNU Affero General Public License.
+
+ Notwithstanding any other provision of this License, you have
+permission to link or combine any covered work with a work licensed
+under version 3 of the GNU Affero General Public License into a single
+combined work, and to convey the resulting work. The terms of this
+License will continue to apply to the part which is the covered work,
+but the special requirements of the GNU Affero General Public License,
+section 13, concerning interaction through a network will apply to the
+combination as such.
+
+ 14. Revised Versions of this License.
+
+ The Free Software Foundation may publish revised and/or new versions of
+the GNU General Public License from time to time. Such new versions will
+be similar in spirit to the present version, but may differ in detail to
+address new problems or concerns.
+
+ Each version is given a distinguishing version number. If the
+Program specifies that a certain numbered version of the GNU General
+Public License "or any later version" applies to it, you have the
+option of following the terms and conditions either of that numbered
+version or of any later version published by the Free Software
+Foundation. If the Program does not specify a version number of the
+GNU General Public License, you may choose any version ever published
+by the Free Software Foundation.
+
+ If the Program specifies that a proxy can decide which future
+versions of the GNU General Public License can be used, that proxy's
+public statement of acceptance of a version permanently authorizes you
+to choose that version for the Program.
+
+ Later license versions may give you additional or different
+permissions. However, no additional obligations are imposed on any
+author or copyright holder as a result of your choosing to follow a
+later version.
+
+ 15. Disclaimer of Warranty.
+
+ THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY
+APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT
+HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY
+OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO,
+THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM
+IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF
+ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
+
+ 16. Limitation of Liability.
+
+ IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
+WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS
+THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY
+GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE
+USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF
+DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD
+PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS),
+EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF
+SUCH DAMAGES.
+
+ 17. Interpretation of Sections 15 and 16.
+
+ If the disclaimer of warranty and limitation of liability provided
+above cannot be given local legal effect according to their terms,
+reviewing courts shall apply local law that most closely approximates
+an absolute waiver of all civil liability in connection with the
+Program, unless a warranty or assumption of liability accompanies a
+copy of the Program in return for a fee.
+
+ END OF TERMS AND CONDITIONS
+
+ How to Apply These Terms to Your New Programs
+
+ If you develop a new program, and you want it to be of the greatest
+possible use to the public, the best way to achieve this is to make it
+free software which everyone can redistribute and change under these terms.
+
+ To do so, attach the following notices to the program. It is safest
+to attach them to the start of each source file to most effectively
+state the exclusion of warranty; and each file should have at least
+the "copyright" line and a pointer to where the full notice is found.
+
+ <one line to give the program's name and a brief idea of what it does.>
+ Copyright (C) <year> <name of author>
+
+ This program is free software: you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation, either version 3 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>.
+
+Also add information on how to contact you by electronic and paper mail.
+
+ If the program does terminal interaction, make it output a short
+notice like this when it starts in an interactive mode:
+
+ <program> Copyright (C) <year> <name of author>
+ This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
+ This is free software, and you are welcome to redistribute it
+ under certain conditions; type `show c' for details.
+
+The hypothetical commands `show w' and `show c' should show the appropriate
+parts of the General Public License. Of course, your program's commands
+might be different; for a GUI interface, you would use an "about box".
+
+ You should also get your employer (if you work as a programmer) or school,
+if any, to sign a "copyright disclaimer" for the program, if necessary.
+For more information on this, and how to apply and follow the GNU GPL, see
+<http://www.gnu.org/licenses/>.
+
+ The GNU General Public License does not permit incorporating your program
+into proprietary programs. If your program is a subroutine library, you
+may consider it more useful to permit linking proprietary applications with
+the library. If this is what you want to do, use the GNU Lesser General
+Public License instead of this License. But first, please read
+<http://www.gnu.org/philosophy/why-not-lgpl.html>.
diff --git a/ChangeLog b/ChangeLog
new file mode 100644
index 000000000..1bf887e46
--- /dev/null
+++ b/ChangeLog
@@ -0,0 +1,1704 @@
+Sun Feb 1 19:51:40 MST 2009
+ Fixed Mantis #1429 (struct padding could cause sizeof
+ to be different on AMD64, using gcc-ism "packed" to
+ avoid this problem).
+
+Sun Feb 1 00:37:16 MST 2009
+ Fixed problem in DHT client protocol that could cause
+ PUT requests from clients to be (frequently) lost.
+
+Sun Nov 2 16:06:47 MST 2008
+ Fixed problem with MySQL disconnects in one module
+ impacting MySQL correctness in another module (caused
+ crashes).
+
+Sat Aug 16 00:18:34 CEST 2008
+ Improved keyword extraction
+ Fixed expiration time of keywords
+ Releasing 0.8.0b.
+
+Sun Jul 20 15:27:11 MDT 2008
+ Releasing 0.8.0a.
+
+Thu Jul 10 00:59:31 MDT 2008
+ Fixed bug where datastore resizing would not
+ result in bloomfilter update during gnunet-update.
+
+Sat Jun 28 23:43:00 MDT 2008
+ Fixed bug preventing namespace advertisements from
+ being processed.
+
+Sat Jun 14 00:54:39 MDT 2008
+ Releasing 0.8.0.
+
+Fri Jun 13 23:51:00 MDT 2008
+ GNUnet now compiles on OpenBSD.
+
+Wed Jun 11 22:17:09 MDT 2008
+ Made state of gnunet-auto-share persistent.
+ Added support for multiple directories. Improved
+ FSUI/ECRS APIs to reduce the number of threads needed
+ for probing. Increased number of concurrent probes
+ allowed.
+
+Sat Jun 7 17:54:49 MDT 2008
+ Simplified namespaces a lot. Shorter timeouts for
+ trying to connect to gnunetd to prevent interactive
+ apps from blocking too long when gnunetd is not
+ running.
+
+Sun Jun 1 21:11:54 MDT 2008
+ Releasing 0.8.0pre1.
+
+Sun Jun 1 13:41:27 MDT 2008
+ Split of libgnunetpseudonym from libgnunetnamespace
+ (with major API extension and changes).
+
+Tue May 6 04:10:02 MDT 2008
+ Added simple sanity check for [MODULES] values.
+ Added "-s" and "-q" options to gnunet-peer-info.
+
+Thu Apr 24 00:05:17 MDT 2008
+ Simplified FSUI stop/abort/pause/resume API calls
+ (no need to pass FSUI context anymore).
+
+Mon Apr 21 21:05:20 MDT 2008
+ Adding buffered IO for FSUI's serialize and
+ deserialize code.
+
+Sun Apr 20 20:01:20 MDT 2008
+ Fixed bug in HTTP transport causing lonely messages
+ (responses to GET) not to be delivered.
+
+Mon Mar 24 21:15:36 MDT 2008
+ Fixed various problems with downloading locally
+ indexed large files (downloading large files from
+ other peers should not have been a problem).
+
+Sun Mar 2 15:33:41 MST 2008
+ Added option to allow user to disable IPv6 support.
+ Releasing 0.8.0pre0.
+
+Sat Mar 1 21:14:02 MST 2008
+ Fixed some dstore performance issues.
+ Made transports alternate between trying IPv4 and IPv6
+ if both are available (since one of them maybe
+ misconfigured).
+
+Mon Feb 25 23:25:48 MST 2008
+ Cleanup of the DNS code: removed GNUNET_IPvXAddress
+ and GNUNET_PRIP; centralized all DNS lookup code in
+ util/network/dns.c; improved IPv6 support for
+ network-client code.
+
+Mon Feb 25 00:01:27 MST 2008
+ Added asynchronous search and download methods for
+ ECRS library. FSUI now can do with only one thread
+ per search or download (until now, we had two
+ threads per search / download).
+
+Tue Feb 19 20:35:28 MST 2008
+ Updated database schemata to support O(1) operations
+ even if there are N files under the same keywords.
+ This breaks database backwards compatibility (and
+ no migration code is provided).
+
+Mon Feb 18 19:47:37 MST 2008
+ Added new options -u and -s to gnunet-insert.
+
+Sat Feb 16 21:37:33 MST 2008
+ Implemented gnunet-auto-share for automatic
+ sharing of directories.
+
+Thu Feb 14 01:02:32 MST 2008
+ Made HTTP transport work over IPv6 as well.
+
+Wed Feb 13 22:59:07 MST 2008
+ Modified mySQL and SQLite datastores to return diverse
+ result sets during (partial) hash-based get iterations
+ (should result in more diverse keyword result sets).
+
+Tue Feb 12 23:54:34 MST 2008
+ First shot at integrated hostlist HTTP server based
+ on libmicrohttpd.
+
+Sat Feb 9 22:06:23 MST 2008
+ Minor changes to the ECRS/FSUI APIs for searches
+ (no more timeouts and/or max-results). Clients who
+ need these features could easily implement them
+ directly (and they are not really useful to begin
+ with).
+ Also, the IPv4 and IPv6 protocols are being integrated
+ so that we only listen to one port (running both IPv4
+ and IPv6 over the same port). This break transport
+ compatibility, but given that we're breaking protocol
+ compatibility for file-sharing already, this may
+ actually be a bit of a good thing (since it will now
+ be possible to tell if peers running the new GAP code
+ are connected to other peers running the new GAP code).
+
+Sun Feb 3 13:17:09 MST 2008
+ Dramatic changes to the GAP implementation (breaking
+ protocol compatibility). Essentially, we can save
+ a few bytes in each reply. More importantly, the new
+ code allows the searching client to specify a set of
+ replies that are not desired (hopefully helping to
+ dramatically increase the diversity of search replies
+ obtained over time). Note that the actual encoding
+ and databases are not affected (just P2P protocol).
+ The update is not complete yet, but should compile.
+
+Tue Jan 8 20:07:20 MST 2008
+ Added option for testing ("make check") to use weak(er)
+ PRNG for key generation (thanks to Werner Koch for
+ pointing out how to do it).
+
+Thu Dec 22 20:10:37 MST 2007
+ Releasing GNUnet 0.7.3.
+
+Sun Dec 9 14:34:32 MST 2007
+ Implemented MySQL version of the dstore-module. This
+ means that sqLite is now again truly optional.
+
+Sat Dec 8 15:15:53 MST 2007
+ Integrated F2F topology into main topology module
+ (options are used to choose between F2F-only (old F2F),
+ minimum number of friend connections (NEW) or entirely
+ arbitrary connection set (default)).
+
+Thu Dec 6 20:51:17 MST 2007
+ The SMTP transport is working again.
+
+Thu Nov 22 20:49:16 MST 2007
+ United all libgnunetutil_*.so libraries into one big
+ libgnunetutil.so library (eliminates issues for binary
+ packagers and reduces file size by about 20%). Also
+ made sure that all exported symbols start with "GNUNET_".
+
+Sat Sep 29 16:48:24 MDT 2007
+ Improved MySQL sqstore module performance.
+ Releasing GNUnet 0.7.2c.
+
+Sat Sep 8 18:01:36 MDT 2007
+ HTTP transport seems finally ready.
+
+Sat Aug 25 23:58:21 MDT 2007
+ New and improved gnunet-setup GTK interface.
+
+Mon Jul 30 00:07:44 MDT 2007
+ Releasing GNUnet 0.7.2b.
+
+Sun Jul 29 01:53:32 MDT 2007
+ Fixing log rotation.
+
+Sat Jul 21 23:42:11 MDT 2007
+ Radical changes to MySQL implementation (trying to
+ address certain scalability issues).
+
+Sat Jul 7 00:22:47 MDT 2007
+ Releasing GNUnet 0.7.2a.
+
+Fri Jul 6 22:54:52 MDT 2007
+ Fixed bugs in F2F topology code. Eliminated a few
+ confusing LOG messages.
+
+Sun Jul 1 20:35:00 MDT 2007
+ Fixed issue with too many TCP connections being
+ created. Reduced CPU overheads by increasing
+ requirements for grouping of messages. Improved
+ various error messages.
+
+Sat Jun 30 01:55:34 MDT 2007
+ Improved bloomfilter recomputation after quota change.
+ Fixed bloomfilter size computation. You must run
+ gnunet-update (will take a while).
+
+Fri Jun 29 00:56:03 MDT 2007
+ Avoid re-connecting shortly after connection was shutdown.
+
+Thu Jun 28 01:10:01 MDT 2007
+ Fixed high-latency problems for certain SQLite operations.
+ Also improved SQLite performance (but not scalability) a
+ bit. Resolved MySQL disconnect crash (gnunetd would crash
+ if mysqld was stopped).
+
+Sat Jun 23 16:56:03 MDT 2007
+ Improved CPU consumption from content migration code
+ by querying the DB less often, using the same content
+ for more peers (at the expense of 1 MB extra memory
+ utilization). Fixed a deadlock.
+
+Wed Jun 20 17:10:38 MDT 2007
+ Fixed bug in MySQL module.
+
+Sun Jun 17 00:09:13 MDT 2007
+ Releasing GNUnet 0.7.2.
+
+Sat Jun 16 04:43:20 MDT 2007
+ http transport is amost back, now needing the
+ new libmicrohttpd. However, the code is still
+ highly experimental and not ready for production
+ use.
+
+Fri Jun 8 23:44:01 MDT 2007
+ Fixed bugs preventing namespace search from
+ working. Also extended testcase to cover
+ namespace search.
+
+Tue May 29 23:15:27 MDT 2007
+ Fixed a major bug which resulted in peers without
+ traffic between them disconnecting (even if that
+ session was their only connection).
+ Fixed another major bug where nodes would not
+ properly forward HELLOs from other peers (given
+ certain common/default configuration options).
+
+Sun May 27 22:39:48 MDT 2007
+ Added new API gnunet_testing_lib.h to make it
+ easier to write testcases that need to start
+ gnunetd. API is now used everywhere and the
+ ugly peer.conf files and directories are gone.
+ Fixed a bug with inserting empty directories.
+ Extended ECRS API to allow partial file download.
+
+Sat May 26 18:24:15 MDT 2007
+ Fixed bugs with testcases (changes in names and
+ structure of options were not reflected in .conf
+ files for various testcases).
+ Fixed issues with command-line option handling (failed to
+ override configuration file options).
+ Fixed bogus nesting in GAP routing algorithm (caused
+ random request drops).
+
+Fri May 25 12:23:38 MDT 2007
+ Finished extended URITRACK API.
+ Renamed various (minor) libraries and function calls to
+ get somewhat more consistent naming conventions.
+
+Sun Apr 15 22:15:37 MDT 2007
+ Implemented heuristic for better packing of gnunet-directories.
+
+Sun Mar 25 13:47:08 MDT 2007
+ Releasing GNUnet 0.7.1c.
+
+Wed Feb 28 15:29:05 MST 2007
+ Enabled abortion of gnunet-peer-info with CTRL-C.
+
+Mon Feb 26 19:19:29 MST 2007
+ Fixed handling of -d option by gnunet-download
+ if -f option is not given.
+
+Sat Feb 24 15:43:14 MST 2007
+ Fixed various bugs related to content expiration.
+ Completed message coverage in stats implementation.
+
+Fri Feb 23 17:55:46 MST 2007
+ Fixed potential deadlock during download shutdown sequence.
+
+Thu Feb 15 21:54:15 MST 2007
+ Added support for IO load detection.
+
+Sun Feb 11 13:53:13 MST 2007
+ Releasing GNUnet 0.7.1b.
+
+Thu Feb 8 13:21:34 MST 2007
+ Updating gettext to 0.16.1.
+ Minor bugfix in build process (#1180, #1181).
+ Minor bugfix in gnunet-search (#1179).
+
+Sun Jan 28 02:43:37 MST 2007
+ Improving support for multiple choice configuration items
+ in gnunet-setup.
+
+Sat Jan 27 16:02:02 MST 2007
+ Changing $-expansion for interpretation of configuration file
+ (again). Also, now the base-path for gnunetd defaults to
+ "/var/lib/gnunet" instead of "/var/lib/GNUnet".
+
+Tue Jan 23 19:48:37 MST 2007
+ Fixed problem with split-extractor keywords not being used
+ for uploads.
+
+Tue Jan 16 21:43:26 MST 2007
+ Expanded transport APIs to avoid building messages for
+ transmission just to have them rejected by blocking TCPs
+ with full transmission queues (happened quite a bit).
+
+Mon Jan 8 22:21:15 MST 2007
+ Making computation of send buffer permuations more
+ efficient (in terms of calling weak_randomi) by only
+ computing permuations over the actually selected messages.
+
+Mon Jan 8 21:34:02 MST 2007
+ Forcing -O3 for crypto library (performance critical).
+ Enforcing message queue limit for daemon (somehow got lost
+ on the way to 0.7.1, was responsible for high CPU load).
+ Fixing cron job deletion in core (clean shutdown).
+
+Sun Dec 31 23:56:31 MST 2006
+ ncurses may need "-lm" in order to link.
+ Releasing GNUnet 0.7.1a.
+
+Sat Dec 30 00:21:49 MST 2006
+ DHT routing now seems to work (not integrated with file-sharing,
+ only for gnunet-dht-query).
+
+Fri Dec 29 09:38:53 MST 2006
+ Added UPnP support to GNUnet (IPv4 only, #843).
+
+Thu Dec 28 21:22:10 MST 2006
+ Hostname resolution with gnunet-peer-info implemented (#1076).
+ Proper linking of gnunet-pseudonym (#1161).
+ Drop group permissions when changing user (#1162).
+ gnunet-download support for directory files implemented (#1013).
+
+Thu Dec 28 20:44:45 MST 2006
+ Hopefully fixing build problems on certain systems with
+ unusual installation of iconv.
+
+Tue Dec 26 20:54:03 MST 2006
+ Added additional gnunet-gtk options to client configuration
+ specification file.
+
+Sun Dec 24 18:06:04 MST 2006
+ Limit memory utilization by select write queue.
+ Improved select write buffering (fewer malloc/free
+ operations and less copying).
+
+Sat Dec 23 22:12:17 MST 2006
+ Updated various man pages and some configuration documentation.
+ Fixed TCP transport (did not work with NAT if port was set to 0).
+ Fixed verbose option for gnunet-transport-check.
+ Updated hostlist scripts in contrib/ to reflect new protocol IDs.
+ Allow aborting of gnunet-transport-check with CTRL-C.
+ Allow testing of bi-directional transports behind NAT with
+ gnunet-transport-check.
+
+Fri Dec 22 19:21:25 MST 2006
+ Added option to set maximum number of file descriptors
+ (convenience for OS X users where the default is too low).
+ Releasing GNUnet 0.7.1.
+
+Thu Dec 21 20:03:07 MST 2006
+ Fixed gnunet-insert "-e" option. Fixed various
+ crashes in client code. Improved OS X portability.
+
+Tue Dec 19 19:03:48 MST 2006
+ Allowing GNUnet (without gnunet-setup) to be build
+ on systems without guile.
+
+Sun Dec 17 16:54:33 MST 2006
+ Various improvements for OS X portability.
+ CPU load detection fix for Solaris.
+
+Sat Dec 16 11:42:13 MST 2006
+ Bugfixes in collection library (gnunet-pseudonym).
+
+Mon Dec 11 21:11:54 MST 2006
+ Implemented ncurses/dialog based gnunet-setup wizard.
+ Releasing GNUnet 0.7.1pre2.
+
+Sun Dec 10 00:36:11 MST 2006
+ Fixed load calculation code. More aggressive utilization
+ of available resources.
+
+Mon Dec 4 13:24:12 MST 2006
+ Releasing GNUnet 0.7.1pre1.
+
+Wed Nov 29 22:20:26 MST 2006
+ Fixed various bugs with (de)serialization of FSUI state
+ and closing searches with associated downloads. Extended
+ FSUI test suite.
+
+Mon Nov 27 08:51:46 MST 2006
+ Added conversion of ECRS error messages to FSUI
+ error event messages.
+
+Sun Nov 19 00:20:14 MST 2006
+ Improved error handling. gnunetd now can communicate
+ text error messages to clients (not just error codes).
+
+Wed Nov 15 23:17:36 MST 2006
+ Fixed expiration time setting. Improved bias of
+ migration towards valuable content.
+ Releasing GNUnet 0.7.1pre0.
+
+Wed Nov 1 20:58:44 MST 2006
+ Fixed MySQL database size underreporting.
+
+Wed Nov 1 13:09:53 MST 2006
+ Fixed some problems with index creation in sqlite
+ datastore (discovered with new sqlite benchmarking
+ code). Performance should improve significantly
+ (observed was a factor of 4-10 depending on
+ database size and operation).
+
+Thu Oct 19 23:44:24 MDT 2006
+ Completed huge update to FSUI API (not fully debugged).
+ Major changes include:
+ * clients can associate pointer with each action
+ * abort methods can cancel action (but do not stop everything)
+ * upload and unindex operations can now be suspended and resumed
+ * cleaned up naming conventions
+
+Thu Sep 14 23:44:17 MDT 2006
+ Breaking UDP transport protocol compatibility -- some
+ fields have to be switched around to make it work with
+ the new select code. Expect to see some warnings when
+ interacting with 0.7.0 peers.
+
+Tue Sep 5 21:28:25 PDT 2006
+ Switched ncurses interface of gnunet-setup to use
+ external dialog library (new dependency!).
+
+Fri Aug 18 00:01:37 PDT 2006
+ Swiched http bootstrap mechanism to using libcurl
+ (new dependency!).
+
+Sat May 20 08:37:02 PDT 2006
+ Releasing GNUnet 0.7.0e.
+
+Sun May 14 02:51:15 PDT 2006
+ Major gnunet-setup GTK code cleanup (now uses libglade).
+
+Sat May 13 19:35:49 PDT 2006
+ Made headers more C++ friendly.
+
+Wed May 10 22:11:17 PDT 2006
+ Fixing bug that could result in hanging the UDP transport;
+ found by Luigi Auriemma (thanks!).
+
+Sat May 6 00:17:59 PDT 2006
+ Releasing GNUnet 0.7.0d.
+
+Fri May 5 01:33:42 PDT 2006
+ Fixed bug with priorities of IBlocks of uploaded content
+ (priority was left at zero, making those blocks be
+ possibly discarded rather quickly once the datastore filled
+ up).
+
+Tue May 2 00:01:25 PDT 2006
+ Fixed bug in gap where the tracking of query origins for
+ optimizing routing paths lacked a simple assignment of the
+ query origin (found by code inspection). As a result,
+ routing performance should improve further. Also fixed
+ small memory leak in gap and reduced memory consumption by
+ fixing Mantis #1058.
+
+Sat Apr 22 13:50:39 PDT 2006
+ Fixed bug in util/cron.c where stopCron() would wait for an
+ unnecessary sleep to complete.
+
+Sat Mar 18 12:54:11 PST 2006
+ Releasing GNUnet 0.7.0c.
+
+Thu Mar 16 22:14:01 PST 2006
+ Fixing various routing problems (resulting in better utilization
+ of bandwidth by routing more content and less queries).
+
+Wed Mar 15 00:00:14 PST 2006
+ Fixing various content migration bugs (one that disabled it,
+ one that made it unlikely that migration was even tried, and
+ then various crashes in formerly dead code).
+
+Mon Jan 23 19:04:17 PST 2006
+ Added Swedish translation.
+
+Sun Jan 1 21:35:59 PST 2006
+ Reduced amount of hashing done to be O(n) and not O(n^2) for
+ n local search results (for example, for 100 results, this can
+ make the difference between hashing 200 MB and hashing 20 MB).
+
+Sat Dec 31 17:02:37 PST 2005
+ Added support for using -k multiple times in gnunet-pseudonym.
+
+Wen Dec 28 00:22:54 CET 2005
+ Fixed deadlock in http transport.
+
+Fri Dec 23 17:17:18 PST 2005
+ Releasing GNUnet 0.7.0b.
+
+Sat Nov 19 16:00:16 PST 2005
+ Releasing GNUnet 0.7.0a.
+
+Fri Oct 7 15:28:02 PDT 2005
+ Fixing Mantis #946.
+
+Thu Sep 15 23:56:39 PDT 2005
+ Fixed various gcc 4.0 warnings.
+
+Sun Aug 28 15:29:56 PDT 2005
+ Releasing GNUnet 0.7.0.
+
+Sun Aug 28 01:46:26 PDT 2005
+ Updated German translation.
+
+Tue Aug 23 00:45:57 PDT 2005
+ Fixed undersynchronization that may result in segv if pending
+ download was cancelled.
+
+Mon Aug 22 00:37:11 PDT 2005
+ Made "UPDATE" use a prepared statement in MySQL datastore.
+
+Sun Aug 21 23:08:57 PDT 2005
+ Fixed bugs causing unnecessary long delays for downloads from
+ loopback. Also now bypassing routing table for loopback download
+ (faster, avoids pollution of the routing table when not needed).
+
+Sun Aug 21 18:42:14 PDT 2005
+ Fixed memory leak in gnunet-insert -R. Improved memory utilization
+ by SQlite dramatically (see discussion on gnunet-developers).
+
+Sat Aug 20 21:04:28 PDT 2005
+ Fixed (rare) segmentation fault in insertion code.
+
+Sat Aug 20 19:31:10 PDT 2005
+ Yet another tiny bug -- but one that hangs gnunetd; fixed in pre6a.
+
+Sat Aug 20 13:51:01 PDT 2005
+ Releasing 0.7.0pre6.
+
+Sat Aug 20 12:51:27 PDT 2005
+ Changed sqlite data format to avoid encoding-decoding
+ (breaks compatibility with previous datastores, in particular
+ since conversion code is NOT provided).
+ The page size was also increased, rendering the database files
+ incompatible, too.
+
+Thu Aug 18 21:18:28 PDT 2005
+ Made quotations match GNU standards.
+
+Wed Aug 17 20:05:19 PDT 2005
+ Fixed bug that would prevent P2P messages from being
+ transmitted under certain (common) circumstances.
+
+Mon Aug 15 00:08:47 PDT 2005
+ Bugfest. Fixed various bugs in MySQL, fragmentation,
+ core and fs (see Mantis for more details).
+
+Mon Jul 18 01:03:05 CEST 2005
+ Alpha-rename fest. Releasing 0.7.0pre5.
+
+Sun Jul 17 13:49:40 CEST 2005
+ Fixed problems with struct alignment on 64-bit
+ AMDs. Fixed recently introduced memory leak.
+ Fixed various compiler warnings.
+
+Sat Jul 16 23:55:31 CEST 2005
+ Fixed various minor problems with platforms
+ without gettext/NLS support and for 64-bit size_ts.
+ Also fixed a couple of other compiler warnings.
+ Cleaned up connection.c code.
+
+Mon Jul 11 14:41:18 CEST 2005
+ Fixed tiny memory leak in http_bootstrap.
+
+Mon Jul 11 02:22:24 CEST 2005
+ Fixed long-standing problems in statuscalls wrt
+ network load estimates, leading to too-high bandwidth
+ consumption on average. Fixed minor memory leaks.
+ Fixed far too often session-key exchange (was done
+ also for sessions that were already up).
+
+Thu Jul 7 15:22:21 CEST 2005
+ Fixed bug in identity, missing ntohs for protocol ID.
+ Fixed bug in topology, wrong calculation of saturation.
+
+Wed Jul 6 22:34:30 CEST 2005
+ Fixed bugs in core with respect to possible infinite
+ recursion caused by fragmentation callbacks. Also
+ differenciated between fatal transport sends and
+ transient transport sends. Cleanup of some APIs.
+
+Sat Jul 2 17:21:07 CEST 2005
+ Fixed bugs in gnunet-pseudonym (listing of namespaces),
+ FSUI (double-free for namespace creation), cleaned up
+ APIs and implemented clearing of completed downloads
+ (FSUI). Releasing 0.7.0pre4.
+
+Fri Jul 1 15:08:42 CEST 2005
+ Added statistics for transports and other connection-
+ related functions. Prevented core from dropping
+ messages just because transport is (temporarily)
+ blocked. Made transport selection in identity random
+ again where necessary.
+
+Thu Jun 30 20:05:15 CEST 2005
+ Added cache for KBlocks (can speed up insertion speed
+ for recursive inserts quite a bit).
+
+Thu Jun 30 13:52:17 CEST 2005
+ Enabled IPv6 by default. Fixed various minor bugs.
+
+Tue Jun 28 13:41:58 UTC 2005
+ Fixed various open FIXMEs, including error handling,
+ bad performance and some memory leaks (gnunet-tools
+ only, not in gnunetd).
+
+Mon Jun 27 17:21:09 CEST 2005
+ Fixed double-free segfault.
+ Fixed problem with session timeout not happening.
+ Fixed issue with too lazy slot reclaim for reconnect.
+ Made reconnect scanning more incremental (1/10th of
+ the work every 500ms instead of full work every 5s).
+ Fixed memory leak in advertisement processing.
+
+Sun Jun 26 18:21:17 CEST 2005
+ Plenty of bugfixes everywhere, gnunet-setup works
+ now. Releasing 0.7.0pre3.
+
+Sat Jun 11 11:25:24 EST 2005
+ Fixed various problems with recursive upload
+ (thread stack size too small, wrong filenames
+ passed around, wrong list of filenames updated).
+
+Sat Apr 2 01:54:23 EST 2005
+ Various bugfixes, some of them critical (segfaults,
+ protocol errors (resulting in failures to connect),
+ old version of configuration file would be
+ generated if configuration was missing,
+ gnunet-insert would not properly work with multiple
+ keywords (-k and -K options)). Releasing 0.7.0pre2.
+
+Thu Mar 31 21:38:06 EST 2005
+ Releasing 0.7.0pre1.
+
+Tue Mar 8 14:45:55 EST 2005
+ OpenSSL cannot fully support SHA-512. Eliminated as an
+ option (not necessary, GPL incompatible, trouble, work
+ to maintain -- in summary: not worth it).
+
+Sat Mar 5 00:33:51 EST 2005
+ Changing hash algorithm to SHA-512.
+ Changing symcipher algorithm to AES-256.
+
+Sun Feb 27 21:59:31 EST 2005
+ All unit testcases pass. Releasing 0.7.0pre0.
+
+Sat Feb 12 17:35:08 EST 2005
+ Fixed mysql-test. Changed MySQL to use prepared statements,
+ avoids conversion (mysql_escape_string) and is faster on the
+ server-side, too.
+
+Wed Dec 15 20:47:40 EST 2004
+ Removed support for password encryption of namespace keys.
+ Hardly used and adds hardly any security. Encrypt /home if
+ you need this, would be more effective anyway.
+
+Fri Nov 26 06:27:12 EST 2004
+ Sessionkey exchange works now, at least with OpenSSL. There
+ seems to be some quirk in some version of libcrypt with
+ respect to RSA encryption. Anyway, it is a heisenbug (sometimes
+ RSA decryption does not result in what was originally
+ encrypted), but I have the feeling this problem existed
+ already in 0.6.5 -- and it is now detected and does not
+ occur all the time.
+
+Tue Nov 23 02:35:50 EST 2004
+ The CVS may look like it's compiling, but that's just because
+ most of the service modules are not even attempted.
+ And without those, nothing will work. But in good news,
+ util, transport and server do compile now.
+
+Sun Nov 21 03:53:22 EST 2004
+ Starting to make incompatible changes. Once this is commited
+ to CVS (which will only happen once at least some parts compile
+ again), this version will no longer be compatible with any
+ previously released version of GNUnet (and highly experimental).
+ Do not yet use the new code on-line, do not expect it to work
+ at all!
+
+Sun Nov 14 16:49:02 EST 2004
+ Debugged collections, seems to work (not that it looks pretty,
+ but it basically works, the rest is UI work). Fixed deadlock
+ in gnunet-gtk logging. Releasing GNUnet 0.6.5.
+
+Thu Nov 4 09:04:48 EST 2004
+ Added (highly experimental) support for collections.
+
+Sat Sep 25 22:29:48 EST 2004
+ Releasing GNUnet 0.6.4a.
+
+Sun Sep 19 23:39:04 EST 2004
+ Various code cleanups and minor bugfixes.
+
+Sun Aug 29 15:11:28 IST 2004
+ Releasing GNUnet 0.6.4.
+
+Tue Aug 24 20:59:14 IST 2004
+ Significant enhancements to namespaces. A namespace can
+ now be annotated with meta-data at the time that it is
+ created.
+
+Sat Aug 21 01:00:06 IST 2004
+ Adding GNU gettext support to configure.
+
+Thu Aug 19 01:26:55 IST 2004
+ Migrating gnunet-gtk to GTK 2.0 (tested with 2.4).
+
+Mon Aug 16 00:30:59 IST 2004
+ Removed gcry. Added dependency on GNU MP library (libgmp)
+ for kblocks.
+
+Tue Aug 3 17:57:43 IST 2004
+ Fixed bugs in gnunet-update. Fixed segfault in AFS startup.
+ Fixed warnings in gnunet-peer-info/gnunetd. Fixed packaging
+ error (not all of util/gcry included in distribution).
+ Releasing GNUnet 0.6.3a.
+
+Mon Aug 2 20:06:07 IST 2004
+ Releasing GNUnet 0.6.3.
+
+Sun Aug 1 01:31:19 IST 2004
+ Changed most places from HexName to the new, shorter EncName.
+ Pushed URIs for namespaces and keyword searches into more
+ widespread use. Replaced all occurences of sprintf with
+ SNPRINTF (to obtain extra bounds check).
+
+Sun Jul 11 13:54:01 IST 2004
+ Moved testcases for libgnunet_util to util/ directory.
+ Made DB testcases in afs/module/ run for each available
+ database and not just the one configured in /etc/gnunet.conf.
+
+Fri Jun 25 21:05:59 IST 2004
+ Releasing GNUnet 0.6.2b (resolves various minor bugs).
+
+Wed May 5 17:34:39 EST 2004
+ Releasing GNUnet 0.6.2a (resolves libgcrypt and packageing
+ issues, improved gtk-statistics, other minor bugfixes).
+
+Fri Apr 30 21:36:23 EST 2004
+ Fixed synchronization problem in cron (only relevant for
+ parallel downloading). Releasing GNUnet 0.6.2.
+
+Mon Apr 26 21:13:45 EST 2004
+ Added support to gnunet-check to convert file index database
+ to new design. Removed support for pre 0.6.1b bloomfilter
+ conversion (would have been too messy to support both).
+ Added old-version check to gnunetd startup to make updates
+ more systematic in the future (not perfect, though).
+
+Mon Apr 26 19:27:29 EST 2004
+ Recursive insertion of directories with gnunet-gtk
+ now works including the progress bar.
+
+Sun Apr 25 18:24:55 EST 2004
+ Global changes to fix bug #698. The fix is still
+ incomplete with respect to pthread.h specific structs.
+
+Sun Apr 25 15:20:29 EST 2004
+ Fixed compile error in IPv6 transports.
+
+Fri Apr 23 23:38:01 EST 2004
+ Added recursive insertion of directories to gnunet-gtk.
+ Progress-bar does not work yet, also libextractor is
+ always used (no option to turn it off).
+
+Fri Apr 23 21:49:18 EST 2004
+ Removed need to specify _protocol in configuration file
+ (shorter is better).
+
+Wed Apr 21 23:32:36 EST 2004
+ Added code to bound priority used by clients by twice the
+ average priority of requests from other peers that are
+ routed at the moment. That prevents clients from exposing
+ themselves with excessively high priorities (and also
+ avoids giving too much credit/trust needlessly).
+
+Tue Apr 20 22:27:19 EST 2004
+ Added possibility of using a link instead of making a copy
+ if gnunetd and the insert-client both run on the same machine.
+
+Tue Apr 20 00:00:58 EST 2004
+ Added network transparency for indexing files (by copying
+ them to a GNUnet(d) specific directory). This breaks
+ unindexing (for files indexed with previous versions) and
+ forces the user to make a copy of the file. In the near
+ future we should resolve this problem by allowing the use
+ of a link.
+
+Sun Apr 18 17:24:34 EST 2004
+ Adding recursive, parallel download of directories to
+ gnunet-download
+
+Sun Apr 18 01:57:32 EST 2004
+ gnunet-transport-check can now be used to check
+ external connectivity (with other peers).
+
+Sat Apr 17 17:46:19 EST 2004
+ Reduced memory consuption for AFS insertion and
+ download.
+
+Sat Apr 10 21:17:46 EST 2004
+ Implemented statistics-plot in gnunet-gtk based on
+ gnome-system-monitor code.
+
+Fri Apr 9 22:01:51 EST 2004
+ Added support for libextractor > 0.2.7.
+
+Fri Apr 9 0:29:20 EST 2004
+ Completed --help conversion.
+
+Wed Mar 31 15:40:51 EST 2004
+ Releasing 0.6.1d.
+
+Tue Mar 30 22:42:13 EST 2004
+ Integrated gnunet-pseudonym-create, -delete and -list into
+ gnunet-pseudonym as well as gnunet-directory-list, -emptydb
+ and -print into gnunet-directory.
+
+Tue Mar 2 10:46:01 EST 2004
+ Fixing bug preventing download for indexed files <= 1k.
+
+Sat Feb 28 03:43:34 EST 2004
+ Releasing 0.6.1c.
+
+Sat Feb 21 06:16:47 EST 2004
+ Modified requestmanager to improve performance at the end of the
+ download.
+
+Thu Feb 19 00:48:33 EST 2004
+ Fixed integer underflow possibly causing slow download performance.
+
+Sun Feb 15 15:17:05 EST 2004
+ Fixed weak key failures with libgcrypt.
+
+Sun Feb 15 13:14:44 EST 2004
+ New routing code (untested) commited.
+
+Sun Feb 15 11:58:10 EST 2004
+ Fixing problem with 64-bit size_t on alpha (#655).
+
+Sat Jan 31 04:32:33 EST 2004
+ Releasing 0.6.1b.
+
+Fri Jan 23 00:00:09 EST 2004
+ Fixed indexed content being overwritten by migrated content
+
+Thu Jan 22 19:27:33 EST 2004
+ Fixed integer-overflow problems in statuscalls.
+ Fixed missing ttl/priority adjustment for NS-Queries.
+ Fixed bug in routing that would let very old queries survive.
+
+Thu Jan 15 23:14:54 EST 2004
+ Fixed size of super-bloomfilter (was factor of 32 to small).
+ Fixed option -r of gnunet-check (would not increment bloom filters
+ to appropriate value).
+
+Wed Dec 31 17:07:40 EST 2003
+ Fixed various routing and bandwidth allocation problems.
+ Releasing 0.6.1a.
+
+Wed Dec 24 00:00:00 EST 2003
+ Releasing 0.6.1.
+
+Fri Dec 19 00:57:29 EST 2003
+ NAT transport passes tests.
+
+Sat Dec 13 00:16:41 EST 2003
+ Added NAT transport.
+
+Thu Oct 16 19:20:29 EST 2003
+ Added greedy knapsack heuristic for use by CPU-overloaded
+ systems.
+
+Mon Oct 13 22:36:45 EST 2003
+ Improved gnunet-gtk code that forks of gnunetd (some extra checking,
+ use fork-exec instead of system(), pass configuration file as
+ argument).
+
+Sun Oct 12 03:42:55 EST 2003
+ Split bandwidth montoring into up and downstream.
+ Why stop sending replies merely because we *receive* traffic!?
+ Also reduced frequency of HELO exchange.
+ Added more statistics (traffic by type).
+
+Fri Oct 10 02:05:13 EST 2003
+ Fixed bug that wasted a lot of CPU time.
+ Better CPU usage control by making knapsack
+ solving (frequency and problem size) dependent
+ on CPU load.
+
+Thu Oct 9 14:29:35 EST 2003
+ Releasing 0.6.0a.
+
+Sun Oct 5 21:35:23 EST 2003
+ GNUnet 0.6.0 released.
+
+Sat Oct 4 12:54:55 EST 2003
+ Fixed bug in timer code (discovered in testcase).
+ Added extensive testcases for platform dependent code.
+
+Fri Sep 19 01:38:00 EST 2003
+ Added code to allow namespace queries to return multiple
+ results. Updates are now displayed in separate tabs.
+
+Wed Sep 17 23:54:15 EST 2003
+ Migrated libgcrypt code in util to comply with
+ libgcrypt 1.1.43 (and it passes the tests just fine)
+
+Wed Sep 17 22:59:16 EST 2003
+ Fixed problems with updates in namespaces in the GTK code.
+ Added boolean search capability (x AND y) to GTK search.
+ Made namespace search frequency respect TTL delays.
+
+Thu Aug 21 19:42:57 EST 2003
+ GNUnet 0.5.5 released.
+
+Tue Aug 12 20:48:39 EST 2003
+ Support for namespaces with updates is there,
+ but requires testing.
+
+Sun Jul 27 14:48:19 EST 2003
+ Added download summary window to gnunet-gtk.
+
+Fri Jul 25 14:15:37 CET 2003
+ Unioned gnunet-insert-multi and gnunet-insert-sblock
+ into gnunet-insert.
+
+Thu Jun 26 23:22:12 EST 2003
+ Added draft support for directories.
+
+Thu Jun 26 23:21:41 EST 2003
+ GNUnet 0.5.4a released
+
+Sat Jun 14 19:21:41 EST 2003
+ Added support for HTTP-PROXY to download the hostlist.
+
+Wed May 29 01:13:15 EST 2003
+ Fixing some ugly bugs in connection.c that caused
+ permanent connection-drop and connection-establish
+ cycles (every 5 minutes).
+
+Sat May 24 03:12:42 EST 2003
+ Migrated subset of libgcrypt into GNUnet tree to use
+ it instead of OpenSSL or libgcrypt. RSA in the new
+ code is broken at the moment.
+
+Sun May 18 04:10:25 EST 2003
+ GNUnet 0.5.4 released.
+
+Sat May 10 21:39:35 EST 2003
+ Only download hostlist after a while if we were
+ not able to connect (to reduce load on hostlist
+ servers).
+
+Fri May 2 23:20:15 EST 2003
+ Added code to handle massive collisions in datastore
+ (thousands of files under the same keyword).
+
+Sun Apr 27 23:52:12 EST 2003
+ GNUnet 0.5.3 released.
+
+Wed Apr 23 03:20:21 EST 2003
+ Build system cleanup, location of mysql, gdbm, tdb and
+ db can now be specified.
+
+Mon Apr 21 01:54:24 EST 2003
+ Made random content selection with pIdx faster
+ (do not read entire pidx files) and fully random
+ (added code to weigh pidx files by number of entries).
+
+Sun Apr 20 23:25:45 EST 2003
+ Fixed double-free in TCP transport code (seems to have
+ only had a real chance to occur under BSD in practice).
+
+Sat Apr 19 14:42:37 EST 2003
+ Replaced use of dlopen for plugins with the more
+ portable ltdl from libtool.
+
+Thu Apr 17 20:36:42 EST 2003
+ Added synchronization to pIdx, also use truncate
+ to remove last n entries instead of re-writing the
+ entire file (much, much faster).
+
+Mon Apr 7 00:00:07 EST 2003
+ Implemented gnunet-delete.
+
+Sat Apr 5 15:55:31 EST 2003
+ Made directory database use 256 sub-directories
+ (should increase speed a lot, with the new DB
+ manager, this will result in at most 2048
+ files per directory).
+
+Mon Mar 31 16:51:24 EST 2003
+ gnunet-convert and gnunet-check compile again
+ with the new DB code.
+
+Sun Mar 30 13:14:52 CET 2003
+ Added BSD DB (libdb) support.
+
+Sun Mar 23 04:04:38 EST 2003
+ Big gnunet-gtk cleanup.
+
+Tue Mar 18 01:52:18 EST 2003
+ Releasing 0.5.2a.
+
+Sun Mar 16 20:24:24 EST 2003
+ Caching of RSA signatures for HELOs reduced CPU
+ usage dramatically, from an average of 31% to less
+ than 5% on my machine.
+
+Sun Mar 16 01:21:16 EST 2003
+ Fixed locking problem and problem with TCP transport
+ (bad set of sockets in select).
+
+Sat Mar 15 03:02:42 EST 2003
+ Fixed bug that copied wrong content (garbage) into
+ replies for other peers. This one was introduced
+ briefly before 0.5.2. Argh.
+
+Fri Feb 28 00:23:02 EST 2003
+ Fixed segfault in gnunet-gtk when closing search
+ sub-window.
+
+Thu Feb 27 16:23:20 EST 2003
+ Releasing GNUnet 0.5.2.
+
+Mon Feb 24 00:28:52 EST 2003
+ Cleaning up the AFS routing code, also some tweaks
+ to improve anonymity against an active attacker.
+
+Thu Feb 20 23:51:30 EST 2003
+ gnunet-tracekit works now nicely (and with dot).
+ Also, GNUnet now attempts to locate a configuration
+ file in /etc/gnunet.conf if ~/.gnunet/gnunet.conf
+ does not exist (and nothing is specified on the
+ command line).
+
+Wed Feb 12 23:21:44 EST 2003
+ Fixed deadlock between pingpong and connection
+ module.
+
+Tue Feb 4 13:22:09 EST 2003
+ Releasing GNUnet 0.5.1(a).
+
+Tue Feb 4 04:05:58 EST 2003
+ RSA encryption of OpenSSL has been changed to pure
+ PKCS #1 to achieve compatibility with libgcrypt.
+
+Mon Feb 3 18:46:54 EST 2003
+ RSA signature encoding has been changed from raw
+ to PKCS #1 compatible encoding. This should help
+ making the migration to libgcrypt easier in the
+ future. RSA & libgcrypt are still not friends,
+ but the GNUnet code should be mostly there.
+
+Fri Jan 31 10:40:01 EST 2003
+ gnunet-peer-info tool was added. This tool can
+ prints information about all known peers and may
+ be useful for diagnostics.
+
+Mon Jan 20 17:54:51 EST 2003
+ A large number of memory leaks got fixed thanks
+ to the new automated scripts to find them.
+
+Thu Jan 16 00:49:20 EST 2003
+ Nearly finished removing dependencies on OpenSSL
+ (using libgcrypt instead), $FOO-expansion in
+ configuration parsing and RSA (public key crypto)
+ are the only missing pieces.
+
+Mon Jan 13 01:53:45 EST 2003
+ Fixed deadlock in gnunetd (would stop processing
+ messages).
+
+Sun Dec 27 13:34:11 CET 2002
+ Fixed segmentation fault that occured when number
+ of known peers goes over 128.
+
+Sat Dec 21 16:27:11 CET 2002
+ Releasing GNUnet 0.5.0.
+
+Sat Dec 14 03:47:05 CET 2002
+ Bugfixes over bugfixes. Various memory leaks
+ from gnunetd to gnunet-download, problems
+ with bloomfilters and gnunet-check, enforcing
+ storage limitations set by the user, fixes
+ in the UDP, TCP and SMTP transports;
+ better thread termination (avoid asynchronous
+ cancellation). Not to mention the new
+ tools gnunet-transport-check and gnunet-tbench
+ for the evaulation of correctness and performance
+ of the transport services.
+
+Wed Nov 6 22:49:24 EST 2002
+ Added load smoothing for network and CPU load
+ such that we quickly adapt to increasing load,
+ but slowly reduce the (effective) load value
+ used in the policy if the load drops. This should
+ help avoiding 0-1 policies where we always jump
+ up and down between 100% load and no load, letting
+ in one period all traffic through and in the next
+ none.
+
+Wed Nov 6 00:31:39 EST 2002
+ Added port==0 for UDP and TCP transport as an
+ option to indicate that the transport is to be
+ used only to establish connections to other
+ peers but not as a server-socket (that is,
+ if the port is 0, other GNUnet peers can not
+ connect to the local node's UDP or TCP port,
+ but the local node can still use UDP
+ (unidirectional) or TCP (even bi-directional)
+ to talk to other peers. This is useful if a
+ node is behind a NAT box and can not receive
+ inbound traffic but is able to send messages to
+ other peers (and in the case of TCP even receive
+ messages if the local peer initiated the
+ bi-directional connection). Currently, a peer
+ must always provide at least one transport under
+ which the peer can be "actively" reached since
+ otherwise other peers will not keep the public
+ key of that peer and thus not be able to
+ complete the session key exchange. For NAT-box
+ peers, SMTP might be a viable choice for that
+ "active" protocol.
+
+Fri Oct 11 02:16:42 EST 2002
+ Added bloomfilter interface and calls to the BF from
+ the AFS service implementation. Missing for working
+ bloomfilter are calls from gnunet-insert to update
+ the bloom-filter (top-CHK and super-queries) and the
+ actual bloom-filter implementation.
+
+Tue Oct 8 20:35:45 EST 2002
+ TCP transport now works with only one thread (using
+ select) instead of one thread per peer-connection.
+
+Fri Sep 27 02:24:52 EST 2002
+ New content encoding (still only 1k blocks, but with
+ CHK style IBocks and GBlocks for aggressive content
+ migration) now seems to work.
+
+Mon Sep 16 01:57:55 EST 2002
+ Implemented gnunet-chat, a demo-application for
+ how to develop p2p applications on top of GNUnet.
+
+Sun Sep 15 22:48:28 EST 2002
+ Fixing (long standing) problem with segfaults under BSD
+ due to stack overflow in threads.
+
+Sun Sep 15 02:04:52 EST 2002
+ TCP transport layer implementation seems to work now.
+ gnunet.conf is now documented on the web. HELO exchange
+ is fixed, so is the CS-connection whitelisting.
+
+Fri Sep 13 00:51:01 EST 2002
+ Update on the progress towards 0.4.9. What is missing?
+ * new content encoding to facilitate:
+ - content migration
+ - discriminated routing (downloads vs. searches)
+ - variable blocksize (?)
+ - self-synchronizing stream encoding (?)
+ * additional transport layers (SMTP, TCP, HTTP)
+ * demo application (chat) for how to use the API
+ * documentation on new gnunet.conf
+ * known bugs:
+ - Igor reports, HELO exchange is broken
+ - David reports, CS-connection whitelisting is broken
+ - rpm.spec is outdated (add GNUnet's dynamic libraries)
+
+ What has been resolved so far:
+ Major:
+ * transport and application layer have been abstracted
+ * dynamic loading of transports and applications is
+ implemented
+ * routing much faster since slots are freed earlier
+ * querymanager is more intelligent in where to send
+ queries (presumably, not tested)
+
+ Refactoring:
+ * configuration can store options from commandline
+ * statistics is totally dynamic and can be extended
+ * connection buffer does callbacks on applications to
+ fill buffers with queries instead of noise, and
+ the querymanager makes use of this
+
+ Moving:
+ * common/ is gone
+ * gnettypes.h is gone
+ * AFS specific code is all in AFS
+ * renaming is also done
+
+Sun Aug 25 15:30:56 EST 2002
+ Moving work towards 0.4.9 to CVS. The major goals are:
+ * independent transport layer (UDP, TCP, SMTP, HTTP,
+ any of these should be possible in the future); also,
+ the MTU may be defined differently by any one of them.
+ * independent application layer. Anonymous File Sharing
+ (AFS) should just be one application for the GNUnet
+ core.
+
+ Other minor goals and refactorings include:
+ * configuration - we should be able to update dynamically
+ options from the gnunet.conf file. E.g. by adding options
+ from the command line
+ * statistics - we should not have a hardwired fixed set
+ of datapoints, the statistics module should be useful
+ for any kind of statistics
+ * noise reduction - the connection buffer should allow
+ the use of intelligent applications that get notified
+ if noise would be send and then can plug in useful data
+
+ And then there is just moving stuff:
+ * move "common/" to where it belongs (either applications
+ or server)
+ * gnettypes is bad if we want to seperate app specifcs
+ and core. The typedefs should be placed where they are
+ used
+ * database does not belong in util, it's AFS specific
+ * AFS: cleaner separation between database, encoding,
+ protocol implementation, shell-tools and GUI code.
+
+ And finally, renaming:
+ * if we have TCP for peer-to-peer communications,
+ we can't use "TCP" vs. "UDP" to distinguish p2p from
+ client-server, thus: "UDP" becomes "p2p" and "TCP"
+ becomes "CS". At least where they were used to distinguish
+ node-to-node and client-server (gnunetd).
+
+Sun Aug 25 15:02:31 EST 2002
+ Releasing GNUnet 0.4.6.
+
+Thu Aug 22 01:31:21 EEST 2002
+ gnunet-gtk should now be able to perform multiple
+ search and download operations simultaneously (atleast a couple).
+
+Tue Aug 20 23:11:10 EEST 2002
+ Fixed segfault in gnunet-search and gnunet-gtk which appeared
+ when there was lots of results.
+ Modified gnunetd to return more results at once if there
+ is excess bandwidth.
+
+Sun Aug 18 23:57:10 EST 2002
+ Reworked the lookup-database. The old database got
+ into trouble storing data when it was 6% full. Some
+ simulations show that the new approach should manage
+ 94% and should be about as fast (more CPU, presumably
+ slightly fewer random disc accesses).
+ This change is INCOMPATIBLE with 0.4.5. You *must*
+ run "gnunet-check -a" before starting this new version
+ of gnunetd in order to migrate to the new format. For
+ database simulation and statistical numbers, see
+ also src/historical/simula.c.
+
+Fri Aug 16 17:07:15 EST 2002
+ Releasing GNUnet 0.4.5.
+
+Fri Aug 16 16:43:39 EST 2002
+ Added feature that will allow the specification of
+ multiple URLs for downloading the initial hostlist.
+
+Mon Aug 12 02:28:14 EST 2002
+ Fixed big problem in requestmanager that would
+ make downloads *very* slow for no good reason
+ at all (ttl increment in wrong place would make
+ us defer the next request for more than twice
+ as long as needed, plus some other minor bugs).
+
+Mon Aug 12 01:31:03 EST 2002
+ Fixed bug #347 (option "-H" to gnunet-clients for
+ connecting to a remote gnunetd node).
+
+Mon Aug 12 01:10:17 EST 2002
+ Fixed bug #348 (no more scan of the entire database
+ on startup, instead the databases (gdbm, tdb) contain
+ an entry that gives the nubmer of entries). Note that
+ this is not done for contentdatabase_directory.
+
+Sun Aug 11 17:00:03 EEST 2002
+ Crude file insertion capabilities added to gnunet-gtk gui.
+
+Thu Aug 8 19:13:34 EST 2002
+ Added progress bar / printing of insertion status to
+ gnunet-insert (option "-V").
+
+Thu Aug 8 19:02:33 EST 2002
+ Cleaning up code (establishing sessions, etc.)
+
+Thu Aug 8 18:03:05 EST 2002
+ Fixed bug #343 (overflow in stats) by moving to
+ long long. Let's hope that __BYTE_ORDER is
+ actually defined outside of netinet/in.h.
+
+Thu Aug 8 17:47:17 EST 2002
+ Fixed gnunetd segfaulting if gnunet.conf is not
+ available. Also, recvfrom returning -1 with
+ errno == EAGAIN was fixed earlier.
+
+Wed Jul 31 23:38:36 EST 2002
+ Released 0.4.4.
+
+Wed Jul 31 21:35:53 EST 2002
+ Fixed bug with TCP connection that would not
+ free thread resources and eventually lead to
+ gnunetd not being able to start new threads
+ anymore (mantis: #339).
+
+Tue Jul 30 23:38:51 EST 2002
+ Fixed SIGHUP exiting. The main loop was exiting
+ because recvfrom returned -1 with errno EINTR,
+ which caused us to break out of the main loop.
+ Also added gnunetd.pid file to simplify killing
+ (or re-reading configuration of) the server.
+ You must specify the PIDFILE in gnunet.conf!
+
+Tue Jul 30 20:38:47 EST 2002
+ Started writing code to enable re-reading of the
+ configuration file whenever we receive a SIGHUP.
+ Works, except that after we've read the new
+ config file, gnunetd exits (unknown why).
+
+Mon Jul 29 18:52:23 EST 2002
+ Added shutdown code that terminates connection when
+ SIGTERM is received (to avoid keeping lots of UDP
+ traffic for the next couple of minutes from hosts
+ that still believe we're up).
+
+Sat Jul 27 12:39:47 EST 2002
+ Added code to measure network load asymmetrically (useful
+ for DSL users).
+
+Fri Jul 26 22:46:54 EST 2002
+ Released 0.4.3.
+
+Wed Jul 24 21:13:08 EST 2002
+ Fixed bug in locking and segfault (Linux tolerated,
+ BSD crashed, both in connection.c), added logging service.
+
+Tue Jul 23 00:41:17 EST 2002
+ Made gnunetd fork like a nice deamon should. Also
+ started to add a logging service.
+
+Sun Jul 21 20:39:20 EST 2002
+ Fixed issue with check_database (index checking too
+ strict if content is available in database and
+ on-demand encoded; also a bounds check was missing).
+
+Sun Jul 21 16:05:20 EST 2002
+ Fixed deadlock in heloexchange (knownhost requires
+ recursive lock).
+
+Sun Jul 21 02:02:32 EST 2002
+ Improved routing table. Now does more dynamic memory
+ allocation, reducing the fixed-size per slot from 700
+ to 56 bytes. Increased number of slots from 512 to
+ 8092 (which is the optimal number for a 56 kbps
+ modem connection).
+
+Sat Jul 20 23:57:06 EST 2002
+ Fixed bug that caused problems for files
+ that were indexed and that had spaces in
+ the filename.
+
+Wed Jul 17 22:50:24 EST 2002
+ Fixed bug that prohibited a transitive HELO exchange
+ in many cases.
+
+Wed Jul 17 01:48:44 EST 2002
+ Fixed a couple of bugs in gnunet-check and the
+ insertion-tools. Now gnunet-check seems to run like
+ a charm. Running it to detect and fix problems in
+ the GNUnet databases seems now recommendable :-).
+ Note that you must stop gnunetd before running
+ gnunet-check.
+
+Mon Jul 15 22:27:45 EST 2002
+ Added return values for insertion. If we run out of
+ space (in particular for the fixed-size index
+ database), we can now communicate the problem to the
+ user.
+ gnunet-check is now pretty much feature-complete,
+ but it takes of course very, very long to run. There
+ is now also a man-page for gnunet-check.
+
+Thu Jul 11 11:33:34 EST 2002
+ Added randomized order of blocks for the download
+ (patch by I. Wronsky).
+
+Thu Jun 20 21:13:21 EST 2002
+ Added HANGUP, a message send if one side terminates the connection.
+ Sending the message is optional, but it is nicer to have it. Also
+ started on gnunet-check, a tool to check database consistency.
+
+Thu Jun 20 03:11:01 EST 2002
+ Improved handling of collisions in the hashes in the
+ lookup module (uses no longer a linear scan on the
+ collisions file but a hashtable for the collisions!).
+
+Tue Jun 18 20:29:38 EST 2002
+ Released GNUnet 0.4.2.
+
+Tue Jun 18 20:20:55 EST 2002
+ Fixed bugs in blacklisting IPs. Added feature to allow specification
+ which networks are trusted enough to connect to the trusted TCP
+ port (TCP/2086 no longer needs to be firewalled!).
+
+Tue Jun 18 02:35:53 EST 2002
+ Fixed problems with ttl (negative TTL queries were forwarded),
+ also better flushing of buffers and fewer SKEY exchanges due to
+ a now working implementation of the blacklist. A DNS lookup for
+ the NAT-box-IP configuration was also added.
+
+Sun Jun 16 04:11:01 EST 2002
+ Added code to provide statistics (gnunet-stats).
+ Incomplete.
+
+Sun Jun 9 22:56:02 EST 2002
+ Released GNUnet 0.4.1.
+
+Sat Jun 8 05:00:36 EST 2002
+ Several small bugfixes (list of shared files not updated on
+ insertion, highest-bit of trust not interpreted as dirty,
+ rpm dependency on libextractor added.
+ Also many improvments to the build process.
+
+Wed Jun 5 17:01:58 EST 2002
+ Made sure that HELOs don't trigger Ping-Pong if we don't
+ really learn anything new.
+
+Tue Jun 4 17:17:45 EST 2002
+ The port numbers were not in network-byte order. Fixing
+ this is trivial, but it breaks compatibility with 0.4.0.
+ Thanks to Rick Kennell for reporting the endianess issue.
+
+Mon Jun 3 20:35:47 EST 2002
+ Fixed bug with CRC not endian-converted in gnunet-gtk.
+ Added mimetype and filename support to gnunet-gtk.
+
+Sun Jun 2 03:52:18 EST 2002
+ Released 0.4.0.
+
+Sat Jun 1 22:13:12 EST 2002
+ Added three-way handshake for SKEY exchange. Not tested.
+
+Sat Jun 1 16:55:18 EST 2002
+ Fixed potential DDoS problem where malicious hosts could
+ trick GNUnet servers to repeatedly probe a non-partitipating host
+ trying to establish a connection. I wonder how many other
+ p2p systems are vulnerable. (Fix: after HELO, play PING-PONG).
+ The endianess issues should be fixed throughout the system, but
+ not tested on a real machine so far.
+
+Sat May 25 15:55:11 EST 2002
+ Moved to new CVS server. First changes towards 0.4.0:
+ * mostly-big-endian
+ * insert/index via TCP
+ * bugfixes (mostly performance)
+
+Sat May 18 16:00:06 EST 2002
+ Added mimetype, filename and version number to RootNodes
+ (mostly incompatible change!). Added automatic generic keyword
+ and mime-type extraction via libextractor to gnunet-insert.
+
+Tue May 14 23:59:40 EST 2002
+ New storage database is starting to look good. We can now store
+ the data in a directory (one file per block), a gdbm database,
+ and presumably (not tested) in a tdb database.
+
+Sat May 11 22:10:56 EST 2002
+ Completed, deployed and tested the new TCPIO code. This changes
+ the gnunetd-client protocol. Essentially, we convert the TCP stream
+ into records with a length and type header. This should allow us
+ to fix bug #212 and add other features in the future. The current
+ change is really only changing the core TCP code and not anything
+ around it. We should deploy some demultiplexing code later.
+
+Tue May 7 20:56:40 EST 2002
+ Added IP blacklisting (for virtual private networks).
+
+Sat May 4 14:08:23 EST 2002
+ Fixed bug with bad insertion of files smaller than 1k.
+
+Fri May 3 23:25:16 EST 2002
+ Added IP change detection (useful for dialup) [bug #272].
+ Added code to ensure that a HELO is life instantly
+ after receiving it, fixing the 'unknown host,
+ refusing SKEY problem' (bug #273). Other minor
+ bugfixes (#274, #283).
+
+Sun Apr 14 22:36:03 EST 2002
+ Added option to allow NAT boxes not to exchange
+ foreign HELOs and thus expose the private
+ network. Fixed bug that all other hosts should
+ in fact do this exchange.
+
+Sat Apr 13 11:02:59 EST 2002
+ Make sure that files are readable before returning TRUE
+ in assertIsFile()
+
+Fri Apr 12 03:01:06 EST 2002
+ Added padding messages with random if maximum
+ packet size is not reached. All encrypted
+ packets now look absolutely uniform in size
+ for a non-participating adversary (before,
+ a host that had few queries may have sent packets
+ that were less than the maximum size).
+
+Thu Apr 11 01:43:28 EST 2002
+ Added sequence numbers to protocol to defend
+ against replay attacks (bug #185).
+
+Wed Apr 10 02:07:25 EST 2002
+ Bugfix gnunet-insert-mp3 (endless loop).
+ Updated documentation.
+
+Mon Apr 8 00:07:15 EST 2002
+ Fixed endless-loop bug when activemigration is turned
+ on (during startup).
+
+Fri Apr 5 02:03:13 EST 2002
+ Released 0.3.3.
+
+Fri Apr 5 00:33:42 EST 2002
+ gnunet-gtk, the gtk+ based GUI is now functional and
+ has all the features of gnunet-search and gnunet-download,
+ including boolean queries. In fact, it is a bit better than
+ gnunet-download as it shows the progress of the download.
+ The manpage for gnunet-gtk was updated. Minor bugfixes.
+
+Mon Mar 25 02:59:13 EST 2002
+ Changed writeFile to use a fourth parameter which is the
+ desired permissions for the file. Files in data/hosts
+ are now world-readable. Created man pages
+
+Mon Mar 18 17:56:52 EST 2002
+ Released 0.3.2.
+
+Sun Mar 17 10:47:51 EST 2002
+ Got rid of far too frequent key exchange attempts.
+ Added expiration for very-long-dead host keys. Stopped
+ forwarding of expired HELOs (receiver drops anyway).
+
+Wed Mar 14 05:46:20 EST 2002
+ Fixed some file location inconsistencies. All files are
+ now in $HOME/GNUnet. RPM installation points to /var/GNUnet
+ and the config file is ~/GNUnet/gnunet.conf
+ Finished port to FreeBSD. This included mostly changes
+ to src/util/statuscalls.c, but also several changes to
+ the build system. Added a stat() call in the server code
+ to make sure the config file exists before sending it to
+ the OpenSSL conf code. Added getopt to source to fix
+ portability issues. Changed FREEBSD defs to SOMEBSD, also
+ changed in configure.in. Compiles and works on at least
+ FreeBSD 4.5 and OpenBSD 3.0
+
+Wed Mar 6 23:15:36 EST 2002
+ Added code for 'fast scan' of the database for
+ content to discard (should be called partial
+ scan). This improves the startup-time dramatically.
+ Every source file got the GNU header.
+
+Tue Mar 5 22:42:36 EST 2002
+ Added option for *not* participating in content
+ migration. Added timeout option to gnunet-search.
+ gnunetd now periodically (1h) scans for new content,
+ no restarting required.
+
+Mon Mar 4 23:21:51 EST 2002
+ Optimized routing and content migration. Distance
+ of the hash to the identity of the local host is
+ now taken into account for routing. Hosts give
+ higher priority to content that is close to their
+ identity (priority towards keeping it). If the
+ network grows, this should significantly improve
+ the performance. Also, the choice of the hosts
+ for routing is now based on proximity (to the
+ query), the activity level of the host and its
+ credit ranking.
+
+Sun Mar 3 00:14:58 EST 2002
+ Implemented binary queries ("AND") for gnunet-search.
+ Made sure that content is not downloaded again if
+ already present (if there is other content, we
+ overwrite). Fixed bug in gnunet-download
+ (uninitialzied time-to-live).
+
+Sat Mar 2 01:57:37 EST 2002
+ Finished porting the download-code to C. Now files can
+ be downloaded in using shell commands. No GUI though.
+ Released GNUnet v0.3.1.
+
+Wed Feb 20 23:47:19 EST 2002
+ Big CVS moving operation.
+
+Sat Feb 16 23:17:27 EST 2002
+ Started migration to GNUnet.
+
+Sun Feb 3 01:20:37 EST 2002
+ Extracted crc32 method from zlib and put only that method into
+ primitives. Reduces our memory footprint (if nobody else uses
+ zlib) and we no longer depend no that library (always good).
+
+Sat Feb 2 22:56:32 EST 2002
+ Building final tarball for v0.3.0.
+
+Wed Jan 30 23:41:04 EST 2002
+ Created mp32gnet, a tool to automaticall index mp3 files
+ using information from the mp3 header as keywords (title,
+ artist, album, comments). The mp3 parsing code comes from
+ the GPL tool mp3info.
+
+Tue Jan 29 17:36:48 EST 2002
+ Fixed bug with files that were not closed under certain
+ circumstances and lead to an exhaustion of the number of
+ concurrently open files.
+
+Mon Jan 21 23:34:44 EST 2002
+ Bumping version numbers to v0.3.0 (not yet released, needs some
+ more testing to be on the safe side).
+
+Sun Jan 20 02:09:06 EST 2002
+ Content gathering now discards the least important
+ content in favour of new, more important content (if
+ there is not space for all content). The cron
+ management is now used everywhere. The rpm, the init-script
+ and the gproxy shell script have been revised.
+
+Sun Jan 13 23:17:58 EST 2002
+ Created cron management, replacing old control
+ thread (allows for better timing of events).
+ EvaluateContent now gets the priority of the
+ query that the content had.
+
+Sun Jan 13 00:54:56 EST 2002
+ Improved choice in number of hosts to forward
+ queries to (now dynamic, depending on priority, etc.)
+ Removed many, many allocations in print statements
+ which also caused memory leaks if active (see
+ debugging.h).
+ Added CRC checking of the root node in GProxy. Fixed
+ problem with CRC in IBlocks for large files.
+ Added dialog to GProxy to choose where to save the file.
+
+Sat Jan 5 14:25:31 EST 2002
+ Optimized routing table. Routing table is now a hashtable
+ (collisions are handled by droping either the former or the
+ new entry). Each bucket has it's own lock, the global
+ semaphore is gone. The table has many more entries (we can
+ afford that now that there is no longer a linear search).
+
+Wed Dec 26 19:30:41 CET 2001
+ Created v0.2.0
+
+Tue Dec 25 21:24:18 CET 2001
+ Fixed TTL errors that made queries loop. Added host-evaluation
+ to policy (drop packets from untrusted hosts under load). Found that CRC-errors
+ are related to policy decisions ("drop"), cosmetic fix.
+
+Sun Nov 25 08:10:52 EST 2001
+ Added triple-hash functionality and on-demand encoding (lookup.c).
+
+Sat Nov 24 07:46:10 EST 2001
+ Added randomized choice of hosts for the hosttable.
+
+Thu Nov 22 04:57:57 EST 2001
+ Fixed another bunch of big bugs, tested, seems to work smoothly. Creating V0.1.0.
+
+Mon Nov 19 01:22:42 EST 2001:
+ Fixed biggest (show-stopper) bugs. Creating V0.0.3
+
+Fri Oct 26 02:20:00 EST 2001:
+ Created ChangeLog. Report important changes here,
+ report small changes to CVS only.
diff --git a/HACKING b/HACKING
new file mode 100644
index 000000000..3c50af952
--- /dev/null
+++ b/HACKING
@@ -0,0 +1,57 @@
+Naming conventions:
+
+include files:
+- _lib: library without need for a process
+- _service: library that needs a service process
+- _plugin: plugin definition
+- _protocol: structs used in network protocol
+- exceptions:
+ * GNUNET_config.h --- generated // FIXME: decapitalize
+ * platform.h --- first included
+ * plibc.h --- external library
+ * gnunet_common.h --- fundamental routines
+ * gnunet_directories.h --- generated
+ * gettext.h --- external library
+
+
+exported symbols:
+- must start with "GNUNET_modulename_" and be defined in "modulename.c"
+- exceptions: those defined in gnunet_common.h
+
+
+testcases:
+- must be called "test_module-under-test_case-description.c"
+- "case-description" maybe omitted if there is only one test
+
+
+performance tests:
+- must be called "perf_module-under-test_case-description.c"
+- "case-description" maybe omitted if there is only one test
+
+
+
+src/ directories:
+- apps: end-user applications (i.e., gnunet-search)
+- connectors: libraries requiring services (i.e., libgnunetstatistics)
+- libs: standalone libraries (i.e., libgnunetecrs, etc.)
+- plugins: loadable plugins (i.e., TCP transport, MySQL backend)
+ * transports: udp/tcp/http/dv???
+- services: arm-controlled applications (i.e., gnunet-service-statistics)
+- util: library for everyone
+
+For each directory in services, there should be one
+in connectors and vice-versa.
+
+For each entry in apps, there should be one in libs.
+
+
+
+Minimum file-sharing system (in order of dependency):
+gnunet-arm
+gnunet-transport (name?)
+gnunet-core (name?)
+gnunet-datastore
+gnunet-statistics (integrate traffic?)
+gnunet-dv
+gnunet-dht
+gnunet-fs
diff --git a/INSTALL b/INSTALL
new file mode 100644
index 000000000..d3c5b40a9
--- /dev/null
+++ b/INSTALL
@@ -0,0 +1,237 @@
+Installation Instructions
+*************************
+
+Copyright (C) 1994, 1995, 1996, 1999, 2000, 2001, 2002, 2004, 2005,
+2006, 2007 Free Software Foundation, Inc.
+
+This file is free documentation; the Free Software Foundation gives
+unlimited permission to copy, distribute and modify it.
+
+Basic Installation
+==================
+
+Briefly, the shell commands `./configure; make; make install' should
+configure, build, and install this package. The following
+more-detailed instructions are generic; see the `README' file for
+instructions specific to this package.
+
+ The `configure' shell script attempts to guess correct values for
+various system-dependent variables used during compilation. It uses
+those values to create a `Makefile' in each directory of the package.
+It may also create one or more `.h' files containing system-dependent
+definitions. Finally, it creates a shell script `config.status' that
+you can run in the future to recreate the current configuration, and a
+file `config.log' containing compiler output (useful mainly for
+debugging `configure').
+
+ It can also use an optional file (typically called `config.cache'
+and enabled with `--cache-file=config.cache' or simply `-C') that saves
+the results of its tests to speed up reconfiguring. Caching is
+disabled by default to prevent problems with accidental use of stale
+cache files.
+
+ If you need to do unusual things to compile the package, please try
+to figure out how `configure' could check whether to do them, and mail
+diffs or instructions to the address given in the `README' so they can
+be considered for the next release. If you are using the cache, and at
+some point `config.cache' contains results you don't want to keep, you
+may remove or edit it.
+
+ The file `configure.ac' (or `configure.in') is used to create
+`configure' by a program called `autoconf'. You need `configure.ac' if
+you want to change it or regenerate `configure' using a newer version
+of `autoconf'.
+
+The simplest way to compile this package is:
+
+ 1. `cd' to the directory containing the package's source code and type
+ `./configure' to configure the package for your system.
+
+ Running `configure' might take a while. While running, it prints
+ some messages telling which features it is checking for.
+
+ 2. Type `make' to compile the package.
+
+ 3. Optionally, type `make check' to run any self-tests that come with
+ the package.
+
+ 4. Type `make install' to install the programs and any data files and
+ documentation.
+
+ 5. You can remove the program binaries and object files from the
+ source code directory by typing `make clean'. To also remove the
+ files that `configure' created (so you can compile the package for
+ a different kind of computer), type `make distclean'. There is
+ also a `make maintainer-clean' target, but that is intended mainly
+ for the package's developers. If you use it, you may have to get
+ all sorts of other programs in order to regenerate files that came
+ with the distribution.
+
+ 6. Often, you can also type `make uninstall' to remove the installed
+ files again.
+
+Compilers and Options
+=====================
+
+Some systems require unusual options for compilation or linking that the
+`configure' script does not know about. Run `./configure --help' for
+details on some of the pertinent environment variables.
+
+ You can give `configure' initial values for configuration parameters
+by setting variables in the command line or in the environment. Here
+is an example:
+
+ ./configure CC=c99 CFLAGS=-g LIBS=-lposix
+
+ *Note Defining Variables::, for more details.
+
+Compiling For Multiple Architectures
+====================================
+
+You can compile the package for more than one kind of computer at the
+same time, by placing the object files for each architecture in their
+own directory. To do this, you can use GNU `make'. `cd' to the
+directory where you want the object files and executables to go and run
+the `configure' script. `configure' automatically checks for the
+source code in the directory that `configure' is in and in `..'.
+
+ With a non-GNU `make', it is safer to compile the package for one
+architecture at a time in the source code directory. After you have
+installed the package for one architecture, use `make distclean' before
+reconfiguring for another architecture.
+
+Installation Names
+==================
+
+By default, `make install' installs the package's commands under
+`/usr/local/bin', include files under `/usr/local/include', etc. You
+can specify an installation prefix other than `/usr/local' by giving
+`configure' the option `--prefix=PREFIX'.
+
+ You can specify separate installation prefixes for
+architecture-specific files and architecture-independent files. If you
+pass the option `--exec-prefix=PREFIX' to `configure', the package uses
+PREFIX as the prefix for installing programs and libraries.
+Documentation and other data files still use the regular prefix.
+
+ In addition, if you use an unusual directory layout you can give
+options like `--bindir=DIR' to specify different values for particular
+kinds of files. Run `configure --help' for a list of the directories
+you can set and what kinds of files go in them.
+
+ If the package supports it, you can cause programs to be installed
+with an extra prefix or suffix on their names by giving `configure' the
+option `--program-prefix=PREFIX' or `--program-suffix=SUFFIX'.
+
+Optional Features
+=================
+
+Some packages pay attention to `--enable-FEATURE' options to
+`configure', where FEATURE indicates an optional part of the package.
+They may also pay attention to `--with-PACKAGE' options, where PACKAGE
+is something like `gnu-as' or `x' (for the X Window System). The
+`README' should mention any `--enable-' and `--with-' options that the
+package recognizes.
+
+ For packages that use the X Window System, `configure' can usually
+find the X include and library files automatically, but if it doesn't,
+you can use the `configure' options `--x-includes=DIR' and
+`--x-libraries=DIR' to specify their locations.
+
+Specifying the System Type
+==========================
+
+There may be some features `configure' cannot figure out automatically,
+but needs to determine by the type of machine the package will run on.
+Usually, assuming the package is built to be run on the _same_
+architectures, `configure' can figure that out, but if it prints a
+message saying it cannot guess the machine type, give it the
+`--build=TYPE' option. TYPE can either be a short name for the system
+type, such as `sun4', or a canonical name which has the form:
+
+ CPU-COMPANY-SYSTEM
+
+where SYSTEM can have one of these forms:
+
+ OS KERNEL-OS
+
+ See the file `config.sub' for the possible values of each field. If
+`config.sub' isn't included in this package, then this package doesn't
+need to know the machine type.
+
+ If you are _building_ compiler tools for cross-compiling, you should
+use the option `--target=TYPE' to select the type of system they will
+produce code for.
+
+ If you want to _use_ a cross compiler, that generates code for a
+platform different from the build platform, you should specify the
+"host" platform (i.e., that on which the generated programs will
+eventually be run) with `--host=TYPE'.
+
+Sharing Defaults
+================
+
+If you want to set default values for `configure' scripts to share, you
+can create a site shell script called `config.site' that gives default
+values for variables like `CC', `cache_file', and `prefix'.
+`configure' looks for `PREFIX/share/config.site' if it exists, then
+`PREFIX/etc/config.site' if it exists. Or, you can set the
+`CONFIG_SITE' environment variable to the location of the site script.
+A warning: not all `configure' scripts look for a site script.
+
+Defining Variables
+==================
+
+Variables not defined in a site shell script can be set in the
+environment passed to `configure'. However, some packages may run
+configure again during the build, and the customized values of these
+variables may be lost. In order to avoid this problem, you should set
+them in the `configure' command line, using `VAR=value'. For example:
+
+ ./configure CC=/usr/local2/bin/gcc
+
+causes the specified `gcc' to be used as the C compiler (unless it is
+overridden in the site shell script).
+
+Unfortunately, this technique does not work for `CONFIG_SHELL' due to
+an Autoconf bug. Until the bug is fixed you can use this workaround:
+
+ CONFIG_SHELL=/bin/bash /bin/bash ./configure CONFIG_SHELL=/bin/bash
+
+`configure' Invocation
+======================
+
+`configure' recognizes the following options to control how it operates.
+
+`--help'
+`-h'
+ Print a summary of the options to `configure', and exit.
+
+`--version'
+`-V'
+ Print the version of Autoconf used to generate the `configure'
+ script, and exit.
+
+`--cache-file=FILE'
+ Enable the cache: use and save the results of the tests in FILE,
+ traditionally `config.cache'. FILE defaults to `/dev/null' to
+ disable caching.
+
+`--config-cache'
+`-C'
+ Alias for `--cache-file=config.cache'.
+
+`--quiet'
+`--silent'
+`-q'
+ Do not print messages saying which checks are being made. To
+ suppress all normal output, redirect it to `/dev/null' (any error
+ messages will still be shown).
+
+`--srcdir=DIR'
+ Look for the package's source code in directory DIR. Usually
+ `configure' can determine that directory automatically.
+
+`configure' also accepts some other, not widely useful, options. Run
+`configure --help' for more details.
+
diff --git a/Makefile.am b/Makefile.am
new file mode 100644
index 000000000..c736a533d
--- /dev/null
+++ b/Makefile.am
@@ -0,0 +1,14 @@
+INCLUDES = -I$(top_srcdir)/src/include
+SUBDIRS = contrib src po
+
+EXTRA_DIST = \
+ ABOUT-NLS \
+ config.rpath \
+ install-sh \
+ HACKING \
+ UPDATING \
+ PLATFORMS \
+ acinclude.m4
+
+ACLOCAL_AMFLAGS = -I m4
+
diff --git a/NEWS b/NEWS
new file mode 100644
index 000000000..898a3dab3
--- /dev/null
+++ b/NEWS
@@ -0,0 +1 @@
+See ChangeLog.
diff --git a/RATIONALE b/RATIONALE
new file mode 100644
index 000000000..e68dcb883
--- /dev/null
+++ b/RATIONALE
@@ -0,0 +1,246 @@
+This document is a summary of why we're moving to GNUnet NG and what
+this major redesign tries to address.
+
+First of all, the redesign does not (intentionally) change anything
+fundamental about the application-level protocols or how files are
+encoded and shared. However, it is not protocol-compatible due to
+other changes that do not relate to the essence of the application
+protocols.
+
+
+The redesign tries to address the following major problem groups
+describing isssues that apply more or less to all GNUnet versions
+prior to 0.9.x:
+
+
+PROBLEM GROUP 1 (scalability):
+* The code was modular, but bugs were not. Memory corruption
+ in one plugin could cause crashes in others and it was not
+ always easy to identify the culprit. This approach
+ fundamentally does not scale (in the sense of GNUnet being
+ a framework and a GNUnet server running hundreds of
+ different application protocols -- and the result still
+ being debuggable, secure and stable).
+* The code was heavily multi-threaded resulting in complex
+ locking operations. GNUnet 0.8.x had over 70 different
+ mutexes and almost 1000 lines of lock/unlock operations.
+ It is challenging for even good programmers to program or
+ maintain good multi-threaded code with this complexity.
+ The excessive locking essentially prevents GNUnet from
+ actually doing much in parallel on multicores.
+* Despite efforts like Freeway, it was virtually
+ impossible to contribute code to GNUnet that was not
+ writen in C/C++.
+* Changes to the configuration almost always required restarts
+ of gnunetd; the existence of change-notifications does not
+ really change that (how many users are even aware of SIGHUP,
+ and how few options worked with that -- and at what expense
+ in code complexity!).
+* Valgrinding could only be done for the entire gnunetd
+ process. Given that gnunetd does quite a bit of
+ CPU-intensive crypto, this could not be done for a system
+ under heavy (or even moderate) load.
+* Stack overflows with threads, while rare under Linux these
+ days, result in really nasty and hard-to-find crashes.
+* structs of function pointers in service APIs were
+ needlessly adding complexity, especially since in
+ most cases there was no polymorphism
+
+SOLUTION:
+* Use multiple, lously-coupled processes and one big select
+ loop in each (supported by a powerful library to eliminate
+ code duplication for each process).
+* Eliminate all threads, manage the processes with a
+ master-process (gnunet-arm, for automatic restart manager)
+ which also ensures that configuration changes trigger the
+ necessary restarts.
+* Use continuations (with timeouts) as a way to unify
+ cron-jobs and other event-based code (such as waiting
+ on network IO).
+ => Using multiple processes ensures that memory corruption
+ stays localized.
+ => Using multiple processes will make it easy to contribute
+ services written in other language(s).
+ => Individual services can now be subjected to valgrind
+ => Process priorities can be used to schedule the CPU better
+ Note that we can not just use one process with a big
+ select loop because we have blocking operations (and the
+ blocking is outside of our control, thanks MySQL,
+ sqlite, gethostbyaddr, etc.). So in order to perform
+ reasonably well, we need some construct for parallel
+ execution.
+
+ RULE: If your service contains blocking functions, it
+ MUST be a process by itself.
+* Eliminate structs with function pointers for service APIs;
+ instead, provide a library (still ending in _service.h) API
+ that transmits the requests nicely to the respective
+ process (easier to use, no need to "request" service
+ in the first place; API can cause process to be started/stopped
+ via ARM if necessary).
+
+
+PROBLEM GROUP 2 (UTIL-APIs causing bugs):
+* The existing logging functions were awkward to use and
+ their expressive power was never really used for much.
+* While we had some rules for naming functions, there
+ were still plenty of inconsistencies.
+* Specification of default values in configuration could
+ result in inconsistencies between defaults in
+ config.scm and defaults used by the program; also,
+ different defaults might have been specified for the
+ same option in different parts of the program.
+* The TIME API did not distinguish between absolute
+ and relative time, requiring users to know which
+ type of value some variable contained and to
+ manually convert properly. Combined with the
+ possibility of integer overflows this is a major
+ source of bugs.
+* The TIME API for seconds has a theoretical problem
+ with a 32-bit overflow on some platforms which is
+ only partially fixed by the old code with some
+ hackery.
+
+SOLUTION:
+* Logging was radically simplified.
+* Functions are now more conistently named.
+* Configuration has no more defaults; instead,
+ we load a global default configuration file
+ before the user-specific configuration (which
+ can be used to override defaults); the global
+ default configuration file will be generated
+ from config.scm.
+* Time now distinguishes between
+ struct GNUNET_TIME_Absolute and
+ struct GNUNET_TIME_Relative. We use structs
+ so that the compiler won't coerce for us
+ (forcing the use of specific conversion
+ functions which have checks for overflows, etc.).
+ Naturally the need to use these functions makes
+ the code a bit more verbose, but that's a good
+ thing given the potential for bugs.
+* There is no more TIME API function to do anything
+ with 32-bit seconds
+
+
+PROBLEM GROUP 3 (statistics):
+* Databases and others needed to store capacity values
+ similar to what stats was already doing, but
+ across process lifetimes ("state"-API was a partial
+ solution for that, but using it was clunky)
+* Only gnunetd could use statistics, but other
+ processes in the GNUnet system might have had
+ good uses for it as well
+
+SOLUTION:
+* New statistics library and service that offer
+ an API to inspect and modify statistics
+* Statistics are distinguished by service name
+ in addition to the name of the value
+* Statistics can be marked as persistent, in
+ which case they are written to disk when
+ the statistics service shuts down.
+ => One solution for existing stats uses,
+ application stats, database stats and
+ versioning information!
+
+
+PROBLEM GROUP 4 (Testing):
+* The existing structure of the code with modules
+ stored in places far away from the test code
+ resulted in tools like lcov not giving good results.
+* The codebase had evolved into a complex, deeply
+ nested hierarchy often with directories that
+ then only contained a single file. Some of these
+ files had the same name making it hard to find
+ the source corresponding to a crash based on
+ the reported filename/line information.
+* Non-trivial portions of the code lacked good testcases,
+ and it was not always obvious which parts of the code
+ were not well-tested.
+
+SOLUTION:
+* Code that should be tested together is now
+ in the same directory.
+* The hierarchy is now essentially flat, each
+ major service having on directory under src/;
+ naming conventions help to make sure that
+ files have globally-unique names
+* All code added to the new repository must
+ come with testcases with reasonable coverage.
+
+
+PROBLEM GROUP 5 (core/transports):
+* The new DV service requires session key exchange
+ between DV-neighbours, but the existing
+ session key code can not be used to achieve this.
+* The core requires certain services
+ (such as identity, pingpong, fragmentation,
+ transport, traffic, session) which makes it
+ meaningless to have these as modules
+ (especially since there is really only one
+ way to implement these)
+* HELLO's are larger than necessary since we need
+ one for each transport (and hence often have
+ to pick a subset of our HELLOs to transmit)
+* Fragmentation is done at the core level but only
+ required for a few transports; future versions of
+ these transports might want to be aware of fragments
+ and do things like retransmission
+* Autoconfiguration is hard since we have no good
+ way to detect (and then use securely) our external IP address
+* It is currently not possible for multiple transports
+ between the same pair of peers to be used concurrently
+ in the same direction(s)
+* We're using lots of cron-based jobs to periodically
+ try (and fail) to build and transmit
+
+SOLUTION:
+* Rewrite core to integrate most of these services
+ into one "core" service.
+* Redesign HELLO to contain the addresses for
+ all enabled transports in one message (avoiding
+ having to transmit the public key and signature
+ many, many times)
+* With discovery being part of the transport service,
+ it is now also possible to "learn" our external
+ IP address from other peers (we just add plausible
+ addresses to the list; other peers will discard
+ those addresses that don't work for them!)
+* New DV will consist of a "transport" and a
+ high-level service (to handle encrypted DV
+ control- and data-messages).
+* Move expiration from one field per HELLO to one
+ per address
+* Require signature in PONG, not in HELLO (and confirm
+ on address at a time)
+* Move fragmentation into helper library linked
+ against by UDP (and others that might need it)
+* Link-to-link advertising of our HELLO is transport
+ responsibility; global advertising/bootstrap remains
+ responsibility of higher layers
+* Change APIs to be event-based (transports pull for
+ transmission data instead of core pushing and failing)
+
+
+PROBLEM GROUP 6 (FS-APIs):
+* As with gnunetd, the FS-APIs are heavily threaded,
+ resulting in hard-to-understand code (slightly
+ better than gnunetd, but not much).
+* GTK in particular does not like this, resulting
+ in complicated code to switch to the GTK event
+ thread when needed (which may still be causing
+ problems on Gnome, not sure).
+* If GUIs die (or are not properly shutdown), state
+ of current transactions is lost (FSUI only
+ saves to disk on shutdown)
+
+SOLUTION (draft, not done yet, details missing...):
+* Eliminate threads from FS-APIs
+ => Open question: how to best write the APIs to
+ allow integration with diverse event loops
+ of GUI libraries?
+* Store FS-state always also on disk
+ => Open question: how to do this without
+ compromising state/scalability?
+
diff --git a/README b/README
new file mode 100644
index 000000000..84330e2ab
--- /dev/null
+++ b/README
@@ -0,0 +1,257 @@
+ Welcome to GNUnet
+
+
+What is GNUnet?
+===============
+
+GNUnet is peer-to-peer framework focusing on security. The first and
+primary application for GNUnet is anonymous file-sharing. GNUnet is
+currently developed by a worldwide group of independent free software
+developers. GNUnet is a part of the GNU project (http://www.gnu.org/).
+
+This is a BETA release. While there are no known significant bugs, we
+are still changing significant aspects of the system in any other
+version. While we believe that the system is usable, quite a few
+important features -- which would improve performance make the life of
+users easier -- are still missing. Also, the documentation may not be
+adequate for inexperienced users.
+
+For a longer description of the GNUnet System see our webpages
+http://www.gnu.org/software/gnunet/ and http://gnunet.org/.
+
+
+Dependencies:
+=============
+
+For the impatient, here is the list of immediate dependencies for
+running GNUnet:
+
+- libextractor >= 0.5.20b
+- libgcrypt >= 1.2
+- libgmp >= 4.0
+- libcurl >= 7.15.4
+- libltdl >= 2.2 (part of GNU libtool)
+- libguile >= 1.8 (required for gnunet-setup)
+- GNU adns >= 1.0 (strongly recommended)
+- mysql >= 5.0 (strongly recommended)
+- sqlite >= 3.0 (alternative to MySQL)
+
+Certain gnunet-setup plugins would also like to have:
+- GTK >= 2.6.0
+- Qt >= 4.0
+- dialog >= 1.0-20051207
+- ncurses
+
+Certain transports would also like to have:
+- libmicrohttpd >= 0.4.0b
+- libcurl >= 7.15.4
+- libesmtp >= 1.0.4
+
+
+Recommended autotools for compiling the SVN version are:
+- autoconf >= 2.59
+- automake >= 1.9.4
+- libtool >= 1.5
+- libltdl >= 2.2.0 (only in Debian experimental)
+
+See also README.debian for a list of Debian packages.
+
+
+How to install?
+===============
+
+The fastest way is to use a binary package if it is available for your
+system. For a more detailed description, read the installation
+instructions on the webpage at http://gnunet.org/documentation.php3.
+
+
+If you install from source, you need to install libextractor
+first (download from http://gnunet.org/libextractor/). Then
+you can start the actual GNUnet compilation process with:
+
+$ ./configure --prefix=$HOME --with-extractor=$HOME
+$ make
+# make install
+# gnunet-setup -d
+# gnunetd
+
+This will compile and install GNUnet to ~/bin/, ~/lib/ and ~/man/.
+gnunet-setup will create the daemon configuration (-d); this step is
+interactive. You can run gnunet-setup as root for a system-wide
+installation or as a particular user to create a personal
+installation. If you do not want to run gnunetd as root, gnunet-setup
+can be used to add a user "gnunet". Data will then be stored in
+/var/lib/GNUnet and gnunetd will run as that user. Note that
+additional, per-user configuration files (~/.gnunet/gnunet.conf) also
+need to be created by each user by running gnunet-setup without the -d
+option. Depending on your operating system the wizards of
+gnunet-setup can also be used to create an init script that starts
+gnunetd each time the system boots. For more general information
+about the GNU build process read the INSTALL file.
+
+GNUnet requires the GNU MP library (http://www.gnu.org/software/gmp/)
+and libgcrypt. You can specify the path to libgcrypt by passing
+"--with-gcrypt=PATH" to configure. You will also need either sqlite
+(version 3 or higher) or MySQL (version 5.0 or higher).
+
+If you are compiling the code from subversion, you have to run
+". bootstrap" before ./configure. If you receive an error during the
+running of ". bootstrap" that looks like "macro `AM_PATH_GTK' not
+found in library", you may need to run aclocal by hand with the -I
+option, pointing to your aclocal m4 macros, i.e.
+
+$ aclocal -I /usr/local/share/aclocal
+
+
+Configuration
+=============
+
+GNUnet uses two types of configuration files, one for the daemon
+(called gnunetd.conf) and one for each user (gnunet.conf). You can
+create and edit these configuration files with the gnunet-setup tool.
+You need to add the option "-d" to gnunet-setup in order to edit
+gnunetd.conf (by default, gnunet-setup will edit gnunet.conf). The
+defaults that are created the first time you run gnunet-setup are
+usually ok, you may want to adjust the limitations (space consumption,
+bandwidth, etc.) though. The configuration files are human-readable;
+gnunetd's configuration is typically located at "/etc/gnunetd.conf".
+The per-user configuration file should be at "~/.gnunet/gnunet.conf".
+A default version of the per-user configuration will automatically
+be created whenever you run any tool that needs that particular
+cofniguration file.
+
+You MUST create /etc/gnunetd.conf explicitly before starting gnunetd,
+and the recommended way to do this is to run gnunet-setup -d (plus
+possibly options to specify which user interface you would perfer).
+
+If you want to use a different configuration file, pass the name of
+the configuration file as an argument with the option "-c" to any
+GNUnet application. Sending a SIGHUP to the gnunetd process will
+cause gnunetd to re-read the configuration file. Note that not all
+options can be changed at runtime this way (e.g. to change any port
+number, you must fully restart gnunetd).
+
+After changing certain options (or updating GNUnet) you must re-run
+gnunet-update.
+
+
+Usage
+=====
+
+First, you must obtain an initial list of GNUnet hosts. Knowing a
+single peer is sufficient since after that GNUnet propagates
+information about other peers. Note that the default "gnunetd.conf"
+contains URLs from where gnunetd downloads an initial hostlist
+whenever it is started. If you want to create an alternative URL for
+others to use, the file can be generated on any machine running
+gnunetd by periodically executing
+
+$ cat $GNUNETD_HOME/data/hosts/* > the_file
+
+If the solution with the URL is not feasible for your situation, you
+can also add hosts manually. The GNUnet webpage has a public
+directory of hostkeys under http://gnunet.org/hosts/. You
+can of course use any other source for these files. Copy the hostkeys
+to "$GNUNETD_HOME/data/hosts/" (where $GNUNETD_HOME is the
+directory specified in the /etc/gnunetd.conf configuration file).
+
+Now start the local node using "gnunetd". gnunetd should run 24/7 if
+you want to maximize your anonymity. You may start it as a service
+with "/etc/init.d/gnunetd start". To insert files into GNUnet, use
+the "gnunet-insert" command.
+
+The GTK user interface is shipped separately from GNUnet. After
+downloading and installing gnunet-gtk, you can invoke the GUI with:
+
+$ gnunet-gtk
+
+For Qt/KDE users, there is also a QT user interface (also shipped
+separately). If you install gnunet-qt, you can invoke the GUI with:
+
+$ gnunet-qt
+
+If you want to use the shell (part of this distribution), use
+
+$ gnunet-search KEYWORD
+
+This will display a list of results to the console. Then use
+
+$ gnunet-download -o FILENAME GNUNET_URI
+
+to retrieve a file. The GNUNET_URI is printed by gnunet-search
+together with a description.
+
+In order to share files, the easiest way is to create a directory
+with the files (and directories) that you want to share and run
+
+$ nohup gnunet-auto-share NAME-OF-THE-DIRECTORY &
+
+For further documentation, see our webpage.
+
+
+Hacking GNUnet
+==============
+
+Contributions are welcome, please submit bugs to
+https://gnunet.org/mantis/. Please make sure to run contrib/report.sh
+and include the output with your bug reports. More about how to
+report bugs can be found in the GNUnet FAQ on the webpage. Submit
+patches via E-Mail to gnunet-developers@gnu.org.
+
+In order to run the unit tests with "make check", you need to
+set an environment variable ("GNUNET_PREFIX") to the directory
+where GNUnet is installed (usually, GNUnet will use OS specific
+tricks in order to try to figure out the PREFIX, but since the
+testcase binaries are not installed, that trick does not work
+for them). Also, before running any testcases, you must
+complete the installation first. Quick summary:
+
+$ ./configure --prefix=$SOMEWHERE
+$ make
+$ make install
+$ export GNUNET_PREFIX=$SOMEWHERE
+$ make check
+
+If any testcases fail to pass on your system, run "contrib/report.sh"
+and report the output together with information about the failing
+testcase to the Mantis bugtracking system at
+https://gnunet.org/mantis/.
+
+
+Running http on port 80
+=======================
+
+In order to hide GNUnet's HTTP traffic perfectly, you might consider
+running GNUnet's HTTP transport on port 80. However, you should not
+run GNUnet as root. Instead, forward port 80 to say 8080 with this
+command (as root, in your startup scripts):
+
+# iptables -t nat -A PREROUTING -p tcp -m tcp --dport 80 -j REDIRECT --to-ports 8080
+
+Then set in the HTTP section of gnunetd.conf the "ADVERTISED-PORT"
+to "80" and "PORT" to 8080. You can do the same trick for the
+TCP and UDP transports if you want to map them to a priviledged
+port (from the point of view of the network).
+
+
+Running the SMTP transport
+==========================
+
+Running GNUnet over SMTP (e-mail) is a bit more involved. Note that
+you do not need to run all transports (only running the NAT transport
+is the only thing that will not work). If you really want to do
+P2P over SMTP, read the instructions at http://gnunet.org/smtp.php3
+
+
+Stay tuned
+==========
+
+* http://www.gnu.org/software/gnunet/
+* http://gnunet.org/
+* https://gnunet.org/mantis/
+* https://gnunet.org/drupal/
+* http://mail.gnu.org/mailman/listinfo/gnunet-developers
+* http://mail.gnu.org/mailman/listinfo/help-gnunet
+* http://mail.gnu.org/mailman/listinfo/info-gnunet
+* http://mail.gnu.org/mailman/listinfo/gnunet-svn
+
diff --git a/TODO b/TODO
new file mode 100644
index 000000000..8c97584cc
--- /dev/null
+++ b/TODO
@@ -0,0 +1,150 @@
+PHASE #1: (Goal: settle key design questions)
+
+Core:
+* API review: should "bpm" and "last_activity" arguments be
+ included in the ClientEventHandler?
+* Internal: topology
+* Internal: bandwidth allocation (inbound limits, trust)
+* Internal: advertising (propagate other peers' HELLOs, find new ones)
+* Internal: bootstrapping
+ => bootstrap should use plugins, possible multiple at the same time!
+
+Util:
+* Should "server" argument be given in event callbacks?
+* consider adding "get_time" to "configuration" API
+
+
+PHASE #2: (Goal: recover basic core functionality)
+
+Datastores:
+* implement sqlite-based sqstore/datastore service
+ + implement library (talks to service)
+ + implement service (datastore + talks to plugin)
+ + implement sqlite plugin (talks to DB)
+* implement sqlite-based dstore services
+ + implement library (talks to service)
+ + implement service (talks to plugin)
+ + implement sqlite plugin (talks to DB)
+
+Applications:
+* implement hostlist service (need to bootstrap!)
+* DHT, DV
+* FS / fs-libs
+
+Databases:
+* mysql & postgres backend
+
+Transports:
+* UDP backend (need LIBRARY to support (de)fragmentation!)
+* HTTP backend
+* Testing:
+ + Testcases for set_quota, timeouts, disconnects, transmit_ready_cancel
+ + Better coverage of gnunet-service-transport (hello validation)
+ + direct test of plugins compliance to plugin API
+
+
+PHASE #3: (Goal: ready for pre-release) [completion-goal: end of 2009]
+
+* testing
+* setup
+* gtk, qt GUIs
+* tbench
+* tracekit
+* vpn
+
+
+
+Minor TODO items:
+* SERVER:
+ - inefficient memmove
+* TRANSPORT:
+ - transport_api: support forcing disconnects through low quotas!
+ - API: consider having core provide priority and possibly
+ deadline information for each message
+ (likely important for DV plugin which wants to loop back!)
+ - implement transport API to pretty-print transport address
+ + transport_api extension (API extension!)
+ + service-transport extension (protocol extension)
+ - add calls to statistics in various places
+ - implement gnunet-transport (transport configurator / tester)
+ - UPnP-based IP detection
+ (Note: build library always, build service when libxml2/etc. are available)
+ - instantly filter addresses from *other* peers that
+ are *equal* to our own address + port (i.e., localhost:2086). We
+ no longer filter those for outgoing (helps with loopback testing
+ and keeps the code clean), but we should filter strictly *impossible*
+ incoming addresses! This is for efficiency, not correctness.
+ - We currently are happy to take any address told to us in a WELCOME
+ to our set of addresses; we should have some minimal threshold-based
+ scheme, limiting both the total number of addresses that we accept
+ this way as well as requiring multiple confirmations; also, we
+ should possibly try to confirm that the given address works for
+ us ourselves (loopback-style) before adding it to the list
+ [SECURITY issue]
+ - not sure current way of doing ACKs works well-enough
+ with unreliable transports where the ACK maybe lost;
+ the "is_new" check would then possibly prevent future
+ ACKs to be delivered, all while we're happily
+ receiving messages from that peer! Worse, the other
+ peer won't generate another ACK since it thinks we're
+ connected just fine...
+ Key questions:
+ + How necessary is ACKing in the first place? (alternatives?)
+ + Should we transmit ACKs in response to every HELLO? (would that
+ fully address the problem?)
+ - latency measurements implemented in the transport
+ plugins makes it only work for bi-di transports
+ and results in code replication
+ - should latency be included in the ReceiveCallback and
+ NotifyConnect or passed on request?
+* SETUP:
+ - auto-generate "defaults.conf" using gnunet-setup from "config.scm"
+ - integrate all options into "config.scm"
+ - change config-file writing to exclude options set to default values
+* ARM:
+ - implement exponential back-off for service restarts
+ - better tracking of which config changes actually need to cause process restarts by ARM.
+ - have way to specify dependencies between services (to manage ARM restarts better)
+* PEERINFO:
+ - have gnunet-peerinfo print actual host addresses again
+ - add option to gnunet-peerinfo to modify trust value
+* POSTGRES-DB:
+ - finish postgres implementation; simplify other SQLs using new stats
+* HTTPS transport
+ - PolariSSL for MHD?
+ - https integration
+* GAP improvements:
+ - active reply route caching design & implementation of service,
+ gap extension!
+
+=> PRE-RELEASE
+
+PHASE #4: [completion-goal: mid 2010]
+* Documentation
+* new webpage
+
+
+
+
+Stuff to remember:
+* Features eliminated from util:
+ - threading (goal: good riddance!)
+ - complex logging features [ectx-passing, target-kinds] (goal: good riddance!)
+ - complex configuration features [defaults, notifications] (goal: good riddance!)
+ - network traffic monitors (goal: eliminate)
+ - IPC semaphores (goal: d-bus? / eliminate?)
+ - second timers
+ - DNS lookup (goal: have async service; issue: still need synchronous resolution in places, current code may not be portable)
+ => code shrunk from 61 files to 34, 22k LOC to 15k LOC, 470k to 330k (with symbols)
+* New features in util:
+ - scheduler
+ - service and program boot-strap code
+* Major changes in util:
+ - more expressive server (replaces selector)
+* Open questions:
+ - how to integrate scheduler with GTK event loop!
+
+
+
+Test coverage:
+* UTIL: 75%, 4914 out of 6463
diff --git a/bin/grephdr.sh b/bin/grephdr.sh
new file mode 100755
index 000000000..b0f979196
--- /dev/null
+++ b/bin/grephdr.sh
@@ -0,0 +1,3 @@
+#!/bin/sh
+# grepsrc.sh string --- greps for string over all java files
+find . -name "*.h" -print | grep -v "#" | xargs grep "$@"
diff --git a/bin/grepsrc.sh b/bin/grepsrc.sh
new file mode 100755
index 000000000..0c18dd7d2
--- /dev/null
+++ b/bin/grepsrc.sh
@@ -0,0 +1,3 @@
+#!/bin/sh
+# grepsrc.sh string --- greps for string over all C files
+find . -name "*.c" -print | grep -v "#" | xargs grep -n "$*"
diff --git a/bin/rename.sh b/bin/rename.sh
new file mode 100755
index 000000000..7d5790b41
--- /dev/null
+++ b/bin/rename.sh
@@ -0,0 +1,6 @@
+#!/bin/sh
+for n in `find * -name "*.c"` `find * -name "*.h"`
+do
+ cat $n | sed -e "s/$1/$2/g" > $n.new
+ mv $n.new $n || echo "Move failed: $n.new to $n"
+done
diff --git a/bootstrap b/bootstrap
new file mode 100755
index 000000000..e5ddbc6a8
--- /dev/null
+++ b/bootstrap
@@ -0,0 +1,7 @@
+#!/bin/sh
+libtoolize -ifc
+aclocal -I m4
+autoheader
+autoconf
+automake --add-missing --copy
+
diff --git a/config.rpath b/config.rpath
new file mode 100755
index 000000000..c492a93b6
--- /dev/null
+++ b/config.rpath
@@ -0,0 +1,614 @@
+#! /bin/sh
+# Output a system dependent set of variables, describing how to set the
+# run time search path of shared libraries in an executable.
+#
+# Copyright 1996-2006 Free Software Foundation, Inc.
+# Taken from GNU libtool, 2001
+# Originally by Gordon Matzigkeit <gord@gnu.ai.mit.edu>, 1996
+#
+# This file is free software; the Free Software Foundation gives
+# unlimited permission to copy and/or distribute it, with or without
+# modifications, as long as this notice is preserved.
+#
+# The first argument passed to this file is the canonical host specification,
+# CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM
+# or
+# CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM
+# The environment variables CC, GCC, LDFLAGS, LD, with_gnu_ld
+# should be set by the caller.
+#
+# The set of defined variables is at the end of this script.
+
+# Known limitations:
+# - On IRIX 6.5 with CC="cc", the run time search patch must not be longer
+# than 256 bytes, otherwise the compiler driver will dump core. The only
+# known workaround is to choose shorter directory names for the build
+# directory and/or the installation directory.
+
+# All known linkers require a `.a' archive for static linking (except MSVC,
+# which needs '.lib').
+libext=a
+shrext=.so
+
+host="$1"
+host_cpu=`echo "$host" | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\1/'`
+host_vendor=`echo "$host" | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\2/'`
+host_os=`echo "$host" | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'`
+
+# Code taken from libtool.m4's _LT_CC_BASENAME.
+
+for cc_temp in $CC""; do
+ case $cc_temp in
+ compile | *[\\/]compile | ccache | *[\\/]ccache ) ;;
+ distcc | *[\\/]distcc | purify | *[\\/]purify ) ;;
+ \-*) ;;
+ *) break;;
+ esac
+done
+cc_basename=`echo "$cc_temp" | sed -e 's%^.*/%%'`
+
+# Code taken from libtool.m4's AC_LIBTOOL_PROG_COMPILER_PIC.
+
+wl=
+if test "$GCC" = yes; then
+ wl='-Wl,'
+else
+ case "$host_os" in
+ aix*)
+ wl='-Wl,'
+ ;;
+ darwin*)
+ case $cc_basename in
+ xlc*)
+ wl='-Wl,'
+ ;;
+ esac
+ ;;
+ mingw* | pw32* | os2*)
+ ;;
+ hpux9* | hpux10* | hpux11*)
+ wl='-Wl,'
+ ;;
+ irix5* | irix6* | nonstopux*)
+ wl='-Wl,'
+ ;;
+ newsos6)
+ ;;
+ linux*)
+ case $cc_basename in
+ icc* | ecc*)
+ wl='-Wl,'
+ ;;
+ pgcc | pgf77 | pgf90)
+ wl='-Wl,'
+ ;;
+ ccc*)
+ wl='-Wl,'
+ ;;
+ como)
+ wl='-lopt='
+ ;;
+ *)
+ case `$CC -V 2>&1 | sed 5q` in
+ *Sun\ C*)
+ wl='-Wl,'
+ ;;
+ esac
+ ;;
+ esac
+ ;;
+ osf3* | osf4* | osf5*)
+ wl='-Wl,'
+ ;;
+ sco3.2v5*)
+ ;;
+ solaris*)
+ wl='-Wl,'
+ ;;
+ sunos4*)
+ wl='-Qoption ld '
+ ;;
+ sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*)
+ wl='-Wl,'
+ ;;
+ sysv4*MP*)
+ ;;
+ unicos*)
+ wl='-Wl,'
+ ;;
+ uts4*)
+ ;;
+ esac
+fi
+
+# Code taken from libtool.m4's AC_LIBTOOL_PROG_LD_SHLIBS.
+
+hardcode_libdir_flag_spec=
+hardcode_libdir_separator=
+hardcode_direct=no
+hardcode_minus_L=no
+
+case "$host_os" in
+ cygwin* | mingw* | pw32*)
+ # FIXME: the MSVC++ port hasn't been tested in a loooong time
+ # When not using gcc, we currently assume that we are using
+ # Microsoft Visual C++.
+ if test "$GCC" != yes; then
+ with_gnu_ld=no
+ fi
+ ;;
+ interix*)
+ # we just hope/assume this is gcc and not c89 (= MSVC++)
+ with_gnu_ld=yes
+ ;;
+ openbsd*)
+ with_gnu_ld=no
+ ;;
+esac
+
+ld_shlibs=yes
+if test "$with_gnu_ld" = yes; then
+ # Set some defaults for GNU ld with shared library support. These
+ # are reset later if shared libraries are not supported. Putting them
+ # here allows them to be overridden if necessary.
+ # Unlike libtool, we use -rpath here, not --rpath, since the documented
+ # option of GNU ld is called -rpath, not --rpath.
+ hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir'
+ case "$host_os" in
+ aix3* | aix4* | aix5*)
+ # On AIX/PPC, the GNU linker is very broken
+ if test "$host_cpu" != ia64; then
+ ld_shlibs=no
+ fi
+ ;;
+ amigaos*)
+ hardcode_libdir_flag_spec='-L$libdir'
+ hardcode_minus_L=yes
+ # Samuel A. Falvo II <kc5tja@dolphin.openprojects.net> reports
+ # that the semantics of dynamic libraries on AmigaOS, at least up
+ # to version 4, is to share data among multiple programs linked
+ # with the same dynamic library. Since this doesn't match the
+ # behavior of shared libraries on other platforms, we cannot use
+ # them.
+ ld_shlibs=no
+ ;;
+ beos*)
+ if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then
+ :
+ else
+ ld_shlibs=no
+ fi
+ ;;
+ cygwin* | mingw* | pw32*)
+ # hardcode_libdir_flag_spec is actually meaningless, as there is
+ # no search path for DLLs.
+ hardcode_libdir_flag_spec='-L$libdir'
+ if $LD --help 2>&1 | grep 'auto-import' > /dev/null; then
+ :
+ else
+ ld_shlibs=no
+ fi
+ ;;
+ interix3*)
+ hardcode_direct=no
+ hardcode_libdir_flag_spec='${wl}-rpath,$libdir'
+ ;;
+ linux*)
+ if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then
+ :
+ else
+ ld_shlibs=no
+ fi
+ ;;
+ netbsd*)
+ ;;
+ solaris*)
+ if $LD -v 2>&1 | grep 'BFD 2\.8' > /dev/null; then
+ ld_shlibs=no
+ elif $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then
+ :
+ else
+ ld_shlibs=no
+ fi
+ ;;
+ sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX*)
+ case `$LD -v 2>&1` in
+ *\ [01].* | *\ 2.[0-9].* | *\ 2.1[0-5].*)
+ ld_shlibs=no
+ ;;
+ *)
+ if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then
+ hardcode_libdir_flag_spec='`test -z "$SCOABSPATH" && echo ${wl}-rpath,$libdir`'
+ else
+ ld_shlibs=no
+ fi
+ ;;
+ esac
+ ;;
+ sunos4*)
+ hardcode_direct=yes
+ ;;
+ *)
+ if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then
+ :
+ else
+ ld_shlibs=no
+ fi
+ ;;
+ esac
+ if test "$ld_shlibs" = no; then
+ hardcode_libdir_flag_spec=
+ fi
+else
+ case "$host_os" in
+ aix3*)
+ # Note: this linker hardcodes the directories in LIBPATH if there
+ # are no directories specified by -L.
+ hardcode_minus_L=yes
+ if test "$GCC" = yes; then
+ # Neither direct hardcoding nor static linking is supported with a
+ # broken collect2.
+ hardcode_direct=unsupported
+ fi
+ ;;
+ aix4* | aix5*)
+ if test "$host_cpu" = ia64; then
+ # On IA64, the linker does run time linking by default, so we don't
+ # have to do anything special.
+ aix_use_runtimelinking=no
+ else
+ aix_use_runtimelinking=no
+ # Test if we are trying to use run time linking or normal
+ # AIX style linking. If -brtl is somewhere in LDFLAGS, we
+ # need to do runtime linking.
+ case $host_os in aix4.[23]|aix4.[23].*|aix5*)
+ for ld_flag in $LDFLAGS; do
+ if (test $ld_flag = "-brtl" || test $ld_flag = "-Wl,-brtl"); then
+ aix_use_runtimelinking=yes
+ break
+ fi
+ done
+ ;;
+ esac
+ fi
+ hardcode_direct=yes
+ hardcode_libdir_separator=':'
+ if test "$GCC" = yes; then
+ case $host_os in aix4.[012]|aix4.[012].*)
+ collect2name=`${CC} -print-prog-name=collect2`
+ if test -f "$collect2name" && \
+ strings "$collect2name" | grep resolve_lib_name >/dev/null
+ then
+ # We have reworked collect2
+ hardcode_direct=yes
+ else
+ # We have old collect2
+ hardcode_direct=unsupported
+ hardcode_minus_L=yes
+ hardcode_libdir_flag_spec='-L$libdir'
+ hardcode_libdir_separator=
+ fi
+ ;;
+ esac
+ fi
+ # Begin _LT_AC_SYS_LIBPATH_AIX.
+ echo 'int main () { return 0; }' > conftest.c
+ ${CC} ${LDFLAGS} conftest.c -o conftest
+ aix_libpath=`dump -H conftest 2>/dev/null | sed -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; }
+}'`
+ if test -z "$aix_libpath"; then
+ aix_libpath=`dump -HX64 conftest 2>/dev/null | sed -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; }
+}'`
+ fi
+ if test -z "$aix_libpath"; then
+ aix_libpath="/usr/lib:/lib"
+ fi
+ rm -f conftest.c conftest
+ # End _LT_AC_SYS_LIBPATH_AIX.
+ if test "$aix_use_runtimelinking" = yes; then
+ hardcode_libdir_flag_spec='${wl}-blibpath:$libdir:'"$aix_libpath"
+ else
+ if test "$host_cpu" = ia64; then
+ hardcode_libdir_flag_spec='${wl}-R $libdir:/usr/lib:/lib'
+ else
+ hardcode_libdir_flag_spec='${wl}-blibpath:$libdir:'"$aix_libpath"
+ fi
+ fi
+ ;;
+ amigaos*)
+ hardcode_libdir_flag_spec='-L$libdir'
+ hardcode_minus_L=yes
+ # see comment about different semantics on the GNU ld section
+ ld_shlibs=no
+ ;;
+ bsdi[45]*)
+ ;;
+ cygwin* | mingw* | pw32*)
+ # When not using gcc, we currently assume that we are using
+ # Microsoft Visual C++.
+ # hardcode_libdir_flag_spec is actually meaningless, as there is
+ # no search path for DLLs.
+ hardcode_libdir_flag_spec=' '
+ libext=lib
+ ;;
+ darwin* | rhapsody*)
+ hardcode_direct=no
+ if test "$GCC" = yes ; then
+ :
+ else
+ case $cc_basename in
+ xlc*)
+ ;;
+ *)
+ ld_shlibs=no
+ ;;
+ esac
+ fi
+ ;;
+ dgux*)
+ hardcode_libdir_flag_spec='-L$libdir'
+ ;;
+ freebsd1*)
+ ld_shlibs=no
+ ;;
+ freebsd2.2*)
+ hardcode_libdir_flag_spec='-R$libdir'
+ hardcode_direct=yes
+ ;;
+ freebsd2*)
+ hardcode_direct=yes
+ hardcode_minus_L=yes
+ ;;
+ freebsd* | kfreebsd*-gnu | dragonfly*)
+ hardcode_libdir_flag_spec='-R$libdir'
+ hardcode_direct=yes
+ ;;
+ hpux9*)
+ hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir'
+ hardcode_libdir_separator=:
+ hardcode_direct=yes
+ # hardcode_minus_L: Not really in the search PATH,
+ # but as the default location of the library.
+ hardcode_minus_L=yes
+ ;;
+ hpux10*)
+ if test "$with_gnu_ld" = no; then
+ hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir'
+ hardcode_libdir_separator=:
+ hardcode_direct=yes
+ # hardcode_minus_L: Not really in the search PATH,
+ # but as the default location of the library.
+ hardcode_minus_L=yes
+ fi
+ ;;
+ hpux11*)
+ if test "$with_gnu_ld" = no; then
+ hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir'
+ hardcode_libdir_separator=:
+ case $host_cpu in
+ hppa*64*|ia64*)
+ hardcode_direct=no
+ ;;
+ *)
+ hardcode_direct=yes
+ # hardcode_minus_L: Not really in the search PATH,
+ # but as the default location of the library.
+ hardcode_minus_L=yes
+ ;;
+ esac
+ fi
+ ;;
+ irix5* | irix6* | nonstopux*)
+ hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir'
+ hardcode_libdir_separator=:
+ ;;
+ netbsd*)
+ hardcode_libdir_flag_spec='-R$libdir'
+ hardcode_direct=yes
+ ;;
+ newsos6)
+ hardcode_direct=yes
+ hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir'
+ hardcode_libdir_separator=:
+ ;;
+ openbsd*)
+ hardcode_direct=yes
+ if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
+ hardcode_libdir_flag_spec='${wl}-rpath,$libdir'
+ else
+ case "$host_os" in
+ openbsd[01].* | openbsd2.[0-7] | openbsd2.[0-7].*)
+ hardcode_libdir_flag_spec='-R$libdir'
+ ;;
+ *)
+ hardcode_libdir_flag_spec='${wl}-rpath,$libdir'
+ ;;
+ esac
+ fi
+ ;;
+ os2*)
+ hardcode_libdir_flag_spec='-L$libdir'
+ hardcode_minus_L=yes
+ ;;
+ osf3*)
+ hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir'
+ hardcode_libdir_separator=:
+ ;;
+ osf4* | osf5*)
+ if test "$GCC" = yes; then
+ hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir'
+ else
+ # Both cc and cxx compiler support -rpath directly
+ hardcode_libdir_flag_spec='-rpath $libdir'
+ fi
+ hardcode_libdir_separator=:
+ ;;
+ solaris*)
+ hardcode_libdir_flag_spec='-R$libdir'
+ ;;
+ sunos4*)
+ hardcode_libdir_flag_spec='-L$libdir'
+ hardcode_direct=yes
+ hardcode_minus_L=yes
+ ;;
+ sysv4)
+ case $host_vendor in
+ sni)
+ hardcode_direct=yes # is this really true???
+ ;;
+ siemens)
+ hardcode_direct=no
+ ;;
+ motorola)
+ hardcode_direct=no #Motorola manual says yes, but my tests say they lie
+ ;;
+ esac
+ ;;
+ sysv4.3*)
+ ;;
+ sysv4*MP*)
+ if test -d /usr/nec; then
+ ld_shlibs=yes
+ fi
+ ;;
+ sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[01].[10]* | unixware7*)
+ ;;
+ sysv5* | sco3.2v5* | sco5v6*)
+ hardcode_libdir_flag_spec='`test -z "$SCOABSPATH" && echo ${wl}-R,$libdir`'
+ hardcode_libdir_separator=':'
+ ;;
+ uts4*)
+ hardcode_libdir_flag_spec='-L$libdir'
+ ;;
+ *)
+ ld_shlibs=no
+ ;;
+ esac
+fi
+
+# Check dynamic linker characteristics
+# Code taken from libtool.m4's AC_LIBTOOL_SYS_DYNAMIC_LINKER.
+libname_spec='lib$name'
+case "$host_os" in
+ aix3*)
+ ;;
+ aix4* | aix5*)
+ ;;
+ amigaos*)
+ ;;
+ beos*)
+ ;;
+ bsdi[45]*)
+ ;;
+ cygwin* | mingw* | pw32*)
+ shrext=.dll
+ ;;
+ darwin* | rhapsody*)
+ shrext=.dylib
+ ;;
+ dgux*)
+ ;;
+ freebsd1*)
+ ;;
+ kfreebsd*-gnu)
+ ;;
+ freebsd* | dragonfly*)
+ ;;
+ gnu*)
+ ;;
+ hpux9* | hpux10* | hpux11*)
+ case $host_cpu in
+ ia64*)
+ shrext=.so
+ ;;
+ hppa*64*)
+ shrext=.sl
+ ;;
+ *)
+ shrext=.sl
+ ;;
+ esac
+ ;;
+ interix3*)
+ ;;
+ irix5* | irix6* | nonstopux*)
+ case "$host_os" in
+ irix5* | nonstopux*)
+ libsuff= shlibsuff=
+ ;;
+ *)
+ case $LD in
+ *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ") libsuff= shlibsuff= ;;
+ *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ") libsuff=32 shlibsuff=N32 ;;
+ *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ") libsuff=64 shlibsuff=64 ;;
+ *) libsuff= shlibsuff= ;;
+ esac
+ ;;
+ esac
+ ;;
+ linux*oldld* | linux*aout* | linux*coff*)
+ ;;
+ linux*)
+ ;;
+ knetbsd*-gnu)
+ ;;
+ netbsd*)
+ ;;
+ newsos6)
+ ;;
+ nto-qnx*)
+ ;;
+ openbsd*)
+ ;;
+ os2*)
+ libname_spec='$name'
+ shrext=.dll
+ ;;
+ osf3* | osf4* | osf5*)
+ ;;
+ solaris*)
+ ;;
+ sunos4*)
+ ;;
+ sysv4 | sysv4.3*)
+ ;;
+ sysv4*MP*)
+ ;;
+ sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*)
+ ;;
+ uts4*)
+ ;;
+esac
+
+sed_quote_subst='s/\(["`$\\]\)/\\\1/g'
+escaped_wl=`echo "X$wl" | sed -e 's/^X//' -e "$sed_quote_subst"`
+shlibext=`echo "$shrext" | sed -e 's,^\.,,'`
+escaped_hardcode_libdir_flag_spec=`echo "X$hardcode_libdir_flag_spec" | sed -e 's/^X//' -e "$sed_quote_subst"`
+
+LC_ALL=C sed -e 's/^\([a-zA-Z0-9_]*\)=/acl_cv_\1=/' <<EOF
+
+# How to pass a linker flag through the compiler.
+wl="$escaped_wl"
+
+# Static library suffix (normally "a").
+libext="$libext"
+
+# Shared library suffix (normally "so").
+shlibext="$shlibext"
+
+# Flag to hardcode \$libdir into a binary during linking.
+# This must work even if \$libdir does not exist.
+hardcode_libdir_flag_spec="$escaped_hardcode_libdir_flag_spec"
+
+# Whether we need a single -rpath flag with a separated argument.
+hardcode_libdir_separator="$hardcode_libdir_separator"
+
+# Set to yes if using DIR/libNAME.so during linking hardcodes DIR into the
+# resulting binary.
+hardcode_direct="$hardcode_direct"
+
+# Set to yes if using the -LDIR flag during linking hardcodes DIR into the
+# resulting binary.
+hardcode_minus_L="$hardcode_minus_L"
+
+EOF
diff --git a/configure.ac b/configure.ac
new file mode 100644
index 000000000..ff6a91d33
--- /dev/null
+++ b/configure.ac
@@ -0,0 +1,821 @@
+# This file is part of GNUnet.
+# (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 Christian Grothoff (and other contributing authors)
+#
+# GNUnet is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published
+# by the Free Software Foundation; either version 2, or (at your
+# option) any later version.
+#
+# GNUnet is distributed in the hope that it will be useful, but
+# WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+# General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with GNUnet; see the file COPYING. If not, write to the
+# Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+# Boston, MA 02111-1307, USA.
+#
+#
+# Process this file with autoconf to produce a configure script.
+#
+#
+AC_PREREQ(2.61)
+AC_INIT([gnunet], [0.9.0pre0],[bug-gnunet@gnu.org])
+AM_INIT_AUTOMAKE([gnunet], [0.9.0pre0])
+AC_CONFIG_HEADERS([gnunet_config.h])
+
+AH_TOP([#define _GNU_SOURCE 1])
+
+# Checks for programs.
+AC_CANONICAL_HOST
+AC_PROG_AWK
+AC_PROG_CC
+AC_PROG_CPP
+AC_PROG_CXX
+AC_PROG_OBJC
+AC_PROG_INSTALL
+AC_PROG_LN_S
+AC_PROG_MAKE_SET
+LT_CONFIG_LTDL_DIR([libltdl])
+AC_CANONICAL_HOST
+LT_INIT([disable-static dlopen win32-dll])
+LTDL_INIT
+AC_SUBST(LTDLINCL)
+AC_SUBST(LIBLTDL)
+AC_SUBST(MKDIR_P)
+
+# large file support
+AC_SYS_LARGEFILE
+AC_FUNC_FSEEKO
+
+
+if test "$enable_shared" = "no"
+then
+ AC_MSG_ERROR([GNUnet only works with shared libraries. Sorry.])
+fi
+
+CFLAGS="-Wall $CFLAGS"
+# use '-fno-strict-aliasing', but only if the compiler can take it
+if gcc -fno-strict-aliasing -S -o /dev/null -xc /dev/null >/dev/null 2>&1;
+then
+ CFLAGS="-fno-strict-aliasing $CFLAGS"
+fi
+
+# Use Linux interface name unless the OS has a different preference
+DEFAULT_INTERFACE="\"eth0\""
+
+# Check system type
+case "$host_os" in
+*darwin* | *rhapsody* | *macosx*)
+ AC_DEFINE_UNQUOTED(OSX,1,[This is an OS X system])
+ CFLAGS="-no-cpp-precomp -fno-common $CFLAGS"
+ AC_MSG_WARN([The VPN application cannot be compiled on your OS])
+ build_target="macosx"
+ DEFAULT_INTERFACE="\"en0\""
+ LIBPREFIX=
+ DLLDIR=lib
+ ;;
+linux*)
+ AC_DEFINE_UNQUOTED(LINUX,1,[This is a Linux system])
+ build_target="linux"
+ LIBPREFIX=
+ DLLDIR=lib
+ AC_PATH_XTRA
+ ;;
+freebsd*)
+ AC_DEFINE_UNQUOTED(SOMEBSD,1,[This is a BSD system])
+ AC_DEFINE_UNQUOTED(FREEBSD,1,[This is a FreeBSD system])
+ CFLAGS="-D_THREAD_SAFE $CFLAGS"
+ build_target="freebsd"
+ LIBPREFIX=
+ DLLDIR=lib
+ ;;
+openbsd*)
+ AC_DEFINE_UNQUOTED(SOMEBSD,1,[This is a BSD system])
+ AC_DEFINE_UNQUOTED(OPENBSD,1,[This is an OpenBSD system])
+ LIBS=`echo $LIBS | sed -e "s/-ldl//"`
+ build_target="openbsd"
+ LIBPREFIX=
+ DLLDIR=lib
+ ;;
+netbsd*)
+ AC_DEFINE_UNQUOTED(SOMEBSD,1,[This is a BSD system])
+ AC_DEFINE_UNQUOTED(NETBSD,1,[This is a NetBSD system])
+ LIBPREFIX=
+ DLLDIR=lib
+ ;;
+*solaris*)
+ AC_DEFINE_UNQUOTED(SOLARIS,1,[This is a Solaris system])
+ AC_DEFINE_UNQUOTED(_REENTRANT,1,[Need with solaris or errno doesnt work])
+ AC_CHECK_LIB(resolv, res_init)
+ AC_CHECK_LIB(rt, nanosleep)
+ build_target="solaris"
+ LIBPREFIX=
+ DLLDIR=lib
+ ;;
+*arm-linux*)
+ AC_DEFINE_UNQUOTED(LINUX,1,[This is a Linux system])
+ CFLAGS="-D_REENTRANT -fPIC -pipe $CFLAGS"
+ build_target="linux"
+ LIBPREFIX=
+ DLLDIR=lib
+ ;;
+*cygwin*)
+ AC_DEFINE_UNQUOTED(CYGWIN,1,[This is a Cygwin system])
+ AC_DEFINE_UNQUOTED(WINDOWS,1,[This is a Windows system])
+ AC_CHECK_LIB(intl, gettext)
+ LDFLAGS="$LDFLAGS -no-undefined"
+ CFLAGS="-mms-bitfields $CFLAGS"
+ build_target="cygwin"
+ LIBPREFIX=lib
+ DLLDIR=bin
+ AC_PROG_CXX
+ ;;
+*mingw*)
+ AC_DEFINE_UNQUOTED(MINGW,1,[This is a MinGW system])
+ AC_DEFINE_UNQUOTED(WINDOWS,1,[This is a Windows system])
+ AC_DEFINE_UNQUOTED(_WIN32,1,[This is a Windows system])
+ AC_CHECK_LIB(intl, gettext)
+ LDFLAGS="$LDFLAGS -no-undefined -Wl,--export-all-symbols"
+ LIBS="$LIBS -lws2_32 -lplibc"
+ CFLAGS="-mms-bitfields $CFLAGS"
+ build_target="mingw"
+ AC_PROG_CXX
+ LIBPREFIX=lib
+ DLLDIR=bin
+ ;;
+*)
+ AC_MSG_RESULT(Unrecognised OS $host_os)
+ AC_DEFINE_UNQUOTED(OTHEROS,1,[Some strange OS])
+;;
+esac
+AC_DEFINE_UNQUOTED([GNUNET_DEFAULT_INTERFACE], $DEFAULT_INTERFACE, [This should be the default choice for the name of the first network interface])
+AC_SUBST(DEFAULT_INTERFACE)
+
+AC_MSG_CHECKING([for build target])
+AM_CONDITIONAL(MACOSX, test "$build_target" = "macosx")
+AM_CONDITIONAL(CYGWIN, test "$build_target" = "cygwin")
+AM_CONDITIONAL(MINGW, test "$build_target" = "mingw")
+AM_CONDITIONAL(SOLARIS, test "$build_target" = "solaris")
+AM_CONDITIONAL(XFREEBSD, test "$build_target" = "freebsd")
+AM_CONDITIONAL(OPENBSD, test "$build_target" = "openbsd")
+AM_CONDITIONAL(LINUX, test "$build_target" = "linux")
+AC_MSG_RESULT([$build_target])
+AC_SUBST(build_target)
+AM_CONDITIONAL([am__fastdepOBJC], false)
+AC_UNALIGNED_64_ACCESS
+
+# some other checks for standard libs
+AC_SEARCH_LIBS([gethostbyname], [nsl ws2_32])
+AC_CHECK_LIB(socket, socket)
+AC_CHECK_LIB(m, log)
+AC_CHECK_LIB(c, getloadavg, AC_DEFINE(HAVE_GETLOADAVG,1,[getloadavg supported]))
+
+# 'save' libs; only those libs found so far will be
+# linked against _everywhere_. For the others, we
+# will be more selective!
+SAVE_LIBS=$LIBS
+
+# libgcrypt
+gcrypt=0
+AM_PATH_LIBGCRYPT(1.2.0, gcrypt=1)
+
+if test $gcrypt = 0
+then
+ AC_MSG_ERROR([GNUnet needs libgcrypt])
+fi
+
+
+# libcurl
+LIBCURL_CHECK_CONFIG(,7.15.4,,AC_MSG_ERROR([GNUnet requires libcurl >= 7.15.4]))
+# restore LIBS
+LIBS=$SAVE_LIBS
+
+# restore LIBS
+LIBS=$SAVE_LIBS
+
+# test for kvm and kstat (for CPU stats under BSD/Solaris)
+AC_CHECK_LIB([kvm],[kvm_open])
+AC_CHECK_LIB([kstat],[kstat_open])
+
+# test for libextractor
+extractor=0
+AC_MSG_CHECKING(for libextractor)
+AC_ARG_WITH(extractor,
+ [ --with-extractor=PFX base of libextractor installation],
+ [AC_MSG_RESULT([$with_extractor])
+ case $with_extractor in
+ no)
+ ;;
+ yes)
+ AC_CHECK_HEADERS(extractor.h,
+ AC_CHECK_LIB([extractor], [EXTRACTOR_loadDefaultLibraries],
+ extractor=1))
+ ;;
+ *)
+ LDFLAGS="-L$with_extractor/lib $LDFLAGS"
+ CPPFLAGS="-I$with_extractor/include $CPPFLAGS"
+ AC_CHECK_HEADERS(extractor.h,
+ AC_CHECK_LIB([extractor], [EXTRACTOR_loadDefaultLibraries],
+ EXT_LIB_PATH="-L$with_extractor/lib $EXT_LIB_PATH"
+ extractor=1))
+ ;;
+ esac
+ ],
+ [AC_MSG_RESULT([--with-extractor not specified])
+ AC_CHECK_HEADERS(extractor.h,
+ AC_CHECK_LIB([extractor], [EXTRACTOR_loadDefaultLibraries],
+ extractor=1))])
+if test "$extractor" != 1
+then
+ AC_MSG_ERROR([GNUnet requires libextractor])
+fi
+# restore LIBS
+LIBS=$SAVE_LIBS
+
+
+# Checks for standard header files.
+AC_HEADER_DIRENT
+AC_HEADER_STDC
+
+# Check for headers that are ALWAYS required
+AC_CHECK_HEADERS([fcntl.h math.h errno.h ctype.h limits.h stdio.h stdlib.h string.h unistd.h stdarg.h signal.h locale.h sys/stat.h sys/types.h],,AC_MSG_ERROR([Compiling GNUnet requires standard UNIX headers files]))
+
+# Checks for headers that are only required on some systems or opional (and where we do NOT abort if they are not there)
+AC_CHECK_HEADERS([langinfo.h sys/param.h sys/mount.h sys/statvfs.h sys/select.h sockLib.h sys/mman.h sys/msg.h sys/vfs.h arpa/inet.h fcntl.h libintl.h netdb.h netinet/in.h sys/ioctl.h sys/socket.h sys/time.h unistd.h kstat.h sys/sysinfo.h kvm.h sys/file.h sys/resource.h iconv.h ifaddrs.h mach/mach.h stddef.h sys/timeb.h terminos.h])
+
+# Check for GMP header (and abort if not present)
+AC_CHECK_HEADERS([gmp.h],,AC_MSG_ERROR([Compiling GNUnet requires gmp.h (from the GNU MP library, libgmp)]))
+
+# test for libgmp
+gmp=0
+AC_MSG_CHECKING(for libgmp)
+AC_ARG_WITH(gmp,
+ [ --with-gmp=PFX base of libgmp installation],
+ [AC_MSG_RESULT([$with_gmp])
+ case $with_gmp in
+ no)
+ ;;
+ yes)
+ AC_CHECK_HEADERS(gmp.h,
+ AC_CHECK_LIB([gmp], [__gmpz_add],
+ gmp=1))
+ ;;
+ *)
+ LDFLAGS="-L$with_gmp/lib $LDFLAGS"
+ CPPFLAGS="-I$with_gmp/include $CPPFLAGS"
+ AC_CHECK_HEADERS(gmp.h,
+ AC_CHECK_LIB([gmp], [__gmpz_add],
+ EXT_LIB_PATH="-L$with_gmp/lib $EXT_LIB_PATH"
+ gmp=1))
+ ;;
+ esac
+ ],
+ [AC_MSG_RESULT([--with-gmp not specified])
+ AC_CHECK_HEADERS(gmp.h,
+ AC_CHECK_LIB([gmp], [__gmpz_add],
+ gmp=1))])
+if test "$gmp" != 1
+then
+ AC_MSG_ERROR([GNUnet requires libgmp])
+fi
+
+SAVE_LDFLAGS=$LDFLAGS
+SAVE_CPPFLAGS=$CPPFLAGS
+
+# test for sqlite
+sqlite=false
+AC_MSG_CHECKING(for SQLite)
+AC_ARG_WITH(sqlite,
+ [ --with-sqlite=PFX base of SQLite installation],
+ [AC_MSG_RESULT("$with_sqlite")
+ case $with_sqlite in
+ no)
+ ;;
+ yes)
+ AC_CHECK_HEADERS(sqlite3.h,
+ sqlite=true)
+ ;;
+ *)
+ LDFLAGS="-L$with_sqlite/lib $LDFLAGS"
+ CPPFLAGS="-I$with_sqlite/include $CPPFLAGS"
+ AC_CHECK_HEADERS(sqlite3.h,
+ EXT_LIB_PATH="-L$with_sqlite/lib $EXT_LIB_PATH"
+ SQLITE_LDFLAGS="-L$with_sqlite/lib"
+ SQLITE_CPPFLAGS="-I$with_sqlite/include"
+ sqlite=true)
+ LDFLAGS=$SAVE_LDFLAGS
+ CPPFLAGS=$SAVE_CPPFLAGS
+ ;;
+ esac
+ ],
+ [AC_MSG_RESULT([--with-sqlite not specified])
+ AC_CHECK_HEADERS(sqlite3.h, sqlite=true)])
+AM_CONDITIONAL(HAVE_SQLITE, test x$sqlite = xtrue)
+AC_SUBST(SQLITE_CPPFLAGS)
+AC_SUBST(SQLITE_LDFLAGS)
+
+# test for postgres
+postgres=false
+AC_MSG_CHECKING(for postgres)
+AC_ARG_WITH(postgres,
+ [ --with-postgres=PFX base of postgres installation],
+ [AC_MSG_RESULT("$with_postgres")
+ case $with_postgres in
+ no)
+ ;;
+ yes)
+ AC_CHECK_HEADERS(postgresql/libpq-fe.h,
+ postgres=true)
+ ;;
+ *)
+ LDFLAGS="-L$with_postgres/lib $LDFLAGS"
+ CPPFLAGS="-I$with_postgres/include $CPPFLAGS"
+ AC_CHECK_HEADERS(postgresql/libpq-fe.h,
+ EXT_LIB_PATH="-L$with_postgres/lib $EXT_LIB_PATH"
+ SQLITE_LDFLAGS="-L$with_postgres/lib"
+ SQLITE_CPPFLAGS="-I$with_postgres/include"
+ postgres=true)
+ LDFLAGS=$SAVE_LDFLAGS
+ CPPFLAGS=$SAVE_CPPFLAGS
+ ;;
+ esac
+ ],
+ [AC_MSG_RESULT([--with-postgres not specified])
+ AC_CHECK_HEADERS(postgresql/libpq-fe.h, postgres=true)])
+AM_CONDITIONAL(HAVE_POSTGRES, test x$postgres = xtrue)
+AC_SUBST(POSTGRES_CPPFLAGS)
+AC_SUBST(POSTGRES_LDFLAGS)
+
+
+# test for libz (maybe required for linking mysql)
+zlib=1
+AC_CHECK_LIB(z, compress,,zlib=0)
+AM_CONDITIONAL(HAVE_ZLIB, test x$zlib = x1)
+if test "$zlib" != 1
+then
+ AC_MSG_ERROR([GNUnet requires zlib])
+fi
+
+# mysql & windows
+AC_CHECK_TYPES([sigset_t, off_t], [], [], [#include <sys/types.h>])
+AC_CHECK_TYPES([size_t], [], [], [#include <stdio.h>])
+
+if test "$build_target" = "mingw"
+then
+ CYGWIN_MYSQL_MAGIC="#include <mysql/my_global.h>"
+fi
+
+# test for mysql
+mysql=false
+mysqlfail=false
+SAVE_LDFLAGS=$LDFLAGS
+SAVE_CPPFLAGS=$CPPFLAGS
+AC_MSG_CHECKING(for mysql)
+AC_ARG_WITH(mysql,
+ [ --with-mysql=PFX base of MySQL installation],
+ [AC_MSG_RESULT("$with_mysql")
+ if test "$with_mysql" != "no"
+ then
+ if test "$with_mysql" != "yes"
+ then
+ LDFLAGS="-L$with_mysql/lib -L$with_mysql/lib/mysql $LDFLAGS $ZLIBS"
+ CPPFLAGS="-I$with_mysql/include $CPPFLAGS"
+ fi
+ AC_CHECK_HEADERS(mysql/mysql.h,
+ AC_CHECK_LIB(mysqlclient, mysql_init,
+ MYSQL_LDFLAGS="-L$with_mysql/lib -L$with_mysql/lib/mysql"
+ MYSQL_CPPFLAGS="-I$with_mysql/include"
+
+ mysql=true), [], [$CYGWIN_MYSQL_MAGIC])
+ fi
+ ],
+ [AC_MSG_RESULT([--with-mysql not specified])
+ LDFLAGS="-L/usr/lib/mysql $LDFLAGS $ZLIBS"
+ AC_CHECK_LIB(mysqlclient, mysql_init,
+ [AC_CHECK_HEADERS(mysql/mysql.h,
+ MYSQL_LDFLAGS="-L/usr/lib/mysql"
+ mysql=true
+
+ , [], [$CYGWIN_MYSQL_MAGIC])])
+ ])
+
+AC_SUBST(MYSQL_LDFLAGS)
+AC_SUBST(MYSQL_CPPFLAGS)
+
+# additional version check for mysql
+AC_ARG_ENABLE(mysql-version-check, [ --disable-mysql-version-check do not check MySQL version],, enable_mysql_version_check=yes)
+if test "$mysql" = "true" -a "x$enable_mysql_version_check" = "xyes"
+then
+ AC_MSG_CHECKING(mysql version)
+ AC_RUN_IFELSE([AC_LANG_PROGRAM(
+ [[$CYGWIN_MYSQL_MAGIC
+ #include <mysql/mysql.h>]],
+ [[if (MYSQL_VERSION_ID < 40100)
+ return(-1);
+ else
+ return(0);
+ ]])
+ ],mysql=true,mysql=false)
+ if test "$mysql" = "false"
+ then
+ mysqlfail=true
+ AC_MSG_RESULT([fail, >= 4.1 required])
+ else
+ AC_MSG_RESULT(ok)
+ fi
+fi
+AM_CONDITIONAL(HAVE_MYSQL, test x$mysql = xtrue)
+AM_CONDITIONAL(HAVE_MYSQLE, test "0" = "1")
+# restore LIBS
+LIBS=$SAVE_LIBS
+LDFLAGS=$SAVE_LDFLAGS
+CPPFLAGS=$SAVE_CPPFLAGS
+
+if test "$sqlite" = 0 -a "$mysql" = 0
+then
+ AC_MSG_ERROR([GNUnet requires SQLite or MySQL])
+fi
+
+# GNUnet Setup
+dialog=0
+LIBS="-lm $LIBS"
+AC_CHECK_LIB([ncursesw],[wmove])
+AC_MSG_CHECKING([for dialog 1.0-20051207])
+AC_ARG_WITH(dialog,
+ [ --with-dialog=PFX base of dialog installation],
+ [AC_MSG_RESULT([$with_dialog])
+ case $with_dialog in
+ no)
+ ;;
+ yes)
+ AC_CHECK_HEADERS(dialog.h,
+ AC_CHECK_LIB([dialog], [dlg_menu],
+ dialog=1))
+ ;;
+ *)
+ LDFLAGS="-L$with_dialog/lib $LDFLAGS"
+ CPPFLAGS="-I$with_dialog/include $CPPFLAGS"
+ AC_CHECK_HEADERS(dialog.h,
+ AC_CHECK_LIB([dialog], [dlg_menu],
+ EXT_LIB_PATH="-L$with_dialog/lib $EXT_LIB_PATH"
+ dialog=1))
+ ;;
+ esac
+ ],
+ [AC_MSG_RESULT([--with-dialog not specified])
+ AC_CHECK_HEADERS(dialog.h,
+ AC_CHECK_LIB([dialog], [dlg_menu],
+ dialog=1))])
+
+AM_CONDITIONAL(HAVE_DIALOG, test x$dialog = x1)
+AC_DEFINE_UNQUOTED([HAVE_DIALOG], $dialog, [We have dialog])
+
+cdialog=0
+AC_ARG_WITH(cdialog,
+ [ --with-cdialog=PFX base of cdialog installation],
+ [AC_MSG_RESULT([$with_cdialog])
+ case $with_cdialog in
+ no)
+ ;;
+ yes)
+ AC_CHECK_HEADERS(cdialog/dialog.h,
+ AC_CHECK_LIB([cdialog], [dlg_menu],
+ cdialog=1))
+ ;;
+ *)
+ LDFLAGS="-L$with_cdialog/lib $LDFLAGS"
+ CPPFLAGS="-I$with_cdialog/include $CPPFLAGS"
+ AC_CHECK_HEADERS(cdialog/dialog.h,
+ AC_CHECK_LIB([cdialog], [dlg_menu],
+ EXT_LIB_PATH="-L$with_cdialog/lib $EXT_LIB_PATH"
+ cdialog=1))
+ ;;
+ esac
+ ],
+ [AC_MSG_RESULT([--with-cdialog not specified])
+ AC_CHECK_HEADERS(cdialog/dialog.h,
+ AC_CHECK_LIB([cdialog], [dlg_menu],
+ cdialog=1))])
+
+AM_CONDITIONAL(HAVE_CDIALOG, test x$cdialog = x1)
+AC_DEFINE_UNQUOTED([HAVE_CDIALOG], $cdialog, [We have cdialog])
+# restore LIBS
+LIBS=$SAVE_LIBS
+
+# libmicrohttpd
+lmhd=0
+AC_MSG_CHECKING([for libmicrohttpd])
+AC_ARG_WITH(microhttpd,
+ [ --with-microhttpd=PFX base of libmicrohttpd installation],
+ [AC_MSG_RESULT([$with_microhttpd])
+ case $with_microhttpd in
+ no)
+ ;;
+ yes)
+ AC_CHECK_HEADERS([microhttpd.h],
+ AC_CHECK_DECL(MHD_OPTION_PER_IP_CONNECTION_LIMIT,
+ AC_CHECK_LIB([microhttpd], [MHD_start_daemon],
+ lmhd=1),
+ [],[#include "src/include/platform.h"
+ #include <microhttpd.h>]),,
+ [#include "src/include/platform.h"])
+ ;;
+ *)
+ LDFLAGS="-L$with_microhttpd/lib $LDFLAGS"
+ CPPFLAGS="-I$with_microhttpd/include $CPPFLAGS"
+ AC_CHECK_HEADERS(microhttpd.h,
+ AC_CHECK_DECL(MHD_OPTION_PER_IP_CONNECTION_LIMIT,
+ AC_CHECK_LIB([microhttpd], [MHD_start_daemon],
+ EXT_LIB_PATH="-L$with_microhttpd/lib $EXT_LIB_PATH"
+ lmhd=1),
+ [],[#include "src/include/platform.h"
+ #include <microhttpd.h>]),,
+ [#include "src/include/platform.h"])
+ ;;
+ esac
+ ],
+ [AC_MSG_RESULT([--with-microhttpd not specified])
+ AC_CHECK_HEADERS([microhttpd.h],
+ AC_CHECK_DECL(MHD_OPTION_PER_IP_CONNECTION_LIMIT,
+ AC_CHECK_LIB([microhttpd], [MHD_start_daemon],
+ lmhd=1),
+ [],[#include "src/include/platform.h"
+ #include <microhttpd.h>]),,
+ [#include "src/include/platform.h"])])
+AM_CONDITIONAL(HAVE_MHD, test x$lmhd = x1)
+AC_DEFINE_UNQUOTED([HAVE_MHD], $lmhd, [We have libmicrohttpd])
+# restore LIBS
+LIBS=$SAVE_LIBS
+
+# libesmtp
+esmtp=0
+AC_MSG_CHECKING([for libesmtp])
+AC_ARG_WITH(esmtp,
+ [ --with-esmtp=PFX base of libesmtp installation],
+ [AC_MSG_RESULT([$with_esmtp])
+ case $with_esmtp in
+ no)
+ ;;
+ yes)
+ AC_CHECK_HEADERS(libesmtp.h,
+ AC_CHECK_LIB([esmtp], [smtp_start_session],
+ esmtp=1))
+ ;;
+ *)
+ LDFLAGS="-L$with_esmtp/lib $LDFLAGS"
+ CPPFLAGS="-I$with_esmtp/include $CPPFLAGS"
+ AC_CHECK_HEADERS(libesmtp.h,
+ AC_CHECK_LIB([esmtp], [smtp_start_session],
+ EXT_LIB_PATH="-L$with_esmtp/lib $EXT_LIB_PATH"
+ esmtp=1))
+ ;;
+ esac
+ ],
+ [AC_MSG_RESULT([--with-esmtp not specified])
+ AC_CHECK_HEADERS(libesmtp.h,
+ AC_CHECK_LIB([esmtp], [smtp_start_session],
+ esmtp=1))])
+AM_CONDITIONAL(HAVE_ESMTP, test x$esmtp = x1)
+AC_DEFINE_UNQUOTED([HAVE_ESMTP], $esmtp, [We have libesmtp])
+# restore LIBS
+LIBS=$SAVE_LIBS
+
+# check for gettext
+AM_GNU_GETTEXT_VERSION([0.16.1])
+AM_GNU_GETTEXT([external])
+
+# check for iconv
+AM_ICONV
+
+# Checks for standard typedefs, structures, and compiler characteristics.
+AC_C_CONST
+AC_TYPE_PID_T
+AC_TYPE_SIZE_T
+AC_TYPE_MODE_T
+AC_HEADER_TIME
+AC_HEADER_STAT
+AC_HEADER_STDBOOL
+AC_STRUCT_TM
+
+
+
+
+# Checks for library functions.
+AC_FUNC_CLOSEDIR_VOID
+AC_FUNC_FORK
+AC_PROG_GCC_TRADITIONAL
+AC_FUNC_MEMCMP
+AC_FUNC_SELECT_ARGTYPES
+AC_FUNC_CHOWN
+
+AC_TYPE_SIGNAL
+AC_FUNC_STAT
+AC_FUNC_STRFTIME
+AC_FUNC_VPRINTF
+AC_HEADER_SYS_WAIT
+AC_TYPE_OFF_T
+AC_TYPE_UID_T
+AC_CHECK_FUNCS([floor gethostname memmove rmdir strncasecmp strrchr strtol atoll dup2 fdatasync ftruncate gettimeofday memset mkdir mkfifo select socket strcasecmp strchr strdup strerror strstr clock_gettime getrusage rand uname setlocale getcwd mktime gmtime_r gmtime strlcpy strlcat ftruncate stat64 sbrk mmap mremap setrlimit gethostbyaddr initgroups getifaddrs freeifaddrs getnameinfo getaddrinfo inet_ntoa localtime_r nl_langinfo putenv realpath strndup gethostbyname2 gethostbyname])
+
+# restore LIBS
+LIBS=$SAVE_LIBS
+
+
+
+# check for guile
+guile=0
+AC_MSG_CHECKING(for guile 1.8)
+AC_ARG_WITH(guile,
+ [ --with-guile=PFX base of guile installation],
+ [AC_MSG_RESULT([$with_guile])
+ case $with_guile in
+ no)
+ ;;
+ yes)
+ AC_CHECK_HEADERS(libguile.h,
+ AC_CHECK_LIB([guile], [scm_c_define_gsubr],
+ guile=1, [],
+ -lgmp $LIBLTDL))
+ ;;
+ *)
+ LDFLAGS="-L$with_guile/lib $LDFLAGS"
+ CPPFLAGS="-I$with_guile/include $CPPFLAGS"
+ AC_CHECK_HEADERS(libguile.h,
+ AC_CHECK_LIB([guile], [scm_c_define_gsubr],
+ EXT_LIB_PATH="-L$with_guile/lib $EXT_LIB_PATH"
+ guile=1, [],
+ -lgmp $LIBLTDL))
+ ;;
+ esac
+ ],
+ [AC_MSG_RESULT([--with-guile not specified])
+ AC_CHECK_HEADERS(libguile.h,
+ AC_CHECK_LIB([guile], [scm_c_define_gsubr],
+ guile=1, [], -lgmp $LIBLTDL))])
+
+if test "$guile" = 1
+then
+ AC_CHECK_LIB([guile], [scm_init_guile], [],
+ AC_MSG_ERROR([Guile doesn't provide scm_init_guile(). Please report to bug-gnunet@gnu.org]), -lgmp $LIBLTDL)
+ AC_DEFINE_UNQUOTED([HAVE_GUILE], 1, [We have GUILE])
+else
+ AC_DEFINE_UNQUOTED([HAVE_GUILE], 0, [We do NOT have GUILE])
+fi
+AM_CONDITIONAL(HAVE_GUILE, test x$guile = x1)
+# restore LIBS
+LIBS=$SAVE_LIBS
+
+gn_user_home_dir="~/.gnunet"
+AC_ARG_WITH(user-home-dir,
+ AC_HELP_STRING(
+ [--with-user-home-dir=DIR],
+ [default user home directory (~/.gnunet)]),
+ [gn_user_home_dir=$withval])
+AC_SUBST(GN_USER_HOME_DIR, $gn_user_home_dir)
+gn_daemon_home_dir="/var/lib/gnunet"
+AC_ARG_WITH(daemon-home-dir,
+ AC_HELP_STRING(
+ [--with-daemon-home-dir=DIR],
+ [default daemon home directory (/var/lib/gnunet)]),
+ [gn_daemon_home_dir=$withval])
+AC_SUBST(GN_DAEMON_HOME_DIR, $gn_daemon_home_dir)
+gn_daemon_config_dir="/etc"
+AC_ARG_WITH(daemon-config-dir,
+ AC_HELP_STRING(
+ [--with-daemon-config-dir=DIR],
+ [default daemon config directory (/etc)]),
+ [gn_daemon_config_dir=$withval])
+AC_SUBST(GN_DAEMON_CONFIG_DIR, $gn_daemon_config_dir)
+gn_daemon_pidfile="/var/run/gnunetd/pid"
+AC_ARG_WITH(daemon-pidfile,
+ AC_HELP_STRING(
+ [--with-daemon-pidfile=FILE],
+ [default daemon pidfile (/var/run/gnunetd/pid)]),
+ [gn_daemon_pidfile=$withval])
+AC_SUBST(GN_DAEMON_PIDFILE, $gn_daemon_pidfile)
+
+GN_INTLINCL=""
+GN_LIBINTL="$LTLIBINTL"
+AC_ARG_ENABLE(framework, [ --enable-framework enable Mac OS X framework build helpers],enable_framework_build=$enableval)
+AM_CONDITIONAL(WANT_FRAMEWORK, test x$enable_framework_build = xyes)
+if test x$enable_framework_build = xyes
+then
+ AC_DEFINE([FRAMEWORK_BUILD], 1, [Build a Mac OS X Framework])
+ GN_INTLINCL='-I$(top_srcdir)/src/intlemu'
+ GN_LIBINTL='$(top_builddir)/src/intlemu/libintlemu.la -framework CoreFoundation'
+ AC_LIB_APPENDTOVAR([CPPFLAGS], [$GN_INTLINCL])
+fi
+
+GN_LIB_LDFLAGS="-export-dynamic -no-undefined"
+GN_PLUGIN_LDFLAGS="-export-dynamic -avoid-version -module -no-undefined"
+dnl TODO insert a proper check here
+AC_CACHE_CHECK([whether -export-symbols-regex works],
+ gn_cv_export_symbols_regex_works,
+ [
+ case "$host_os" in
+ mingw*) gn_cv_export_symbols_regex_works=no;;
+ *) gn_cv_export_symbols_regex_works=yes;;
+ esac
+ ])
+if test "x$gn_cv_export_symbols_regex_works" = "xyes"
+then
+ GN_LIB_LDFLAGS="$GN_LIB_LDFLAGS -export-symbols-regex \"GNUNET_@<:@a-zA-Z0-9_@:>@*\""
+ GN_PLUGIN_LDFLAGS="$GN_PLUGIN_LDFLAGS -export-symbols-regex \"@<:@a-zA-Z0-9_@:>@*\""
+fi
+AC_SUBST(GN_LIB_LDFLAGS)
+AC_SUBST(GN_PLUGIN_LDFLAGS)
+AC_SUBST(GN_INTLINCL)
+AC_SUBST(GN_LIBINTL)
+
+AC_SUBST(CPPFLAGS)
+AC_SUBST(LIBS)
+AC_SUBST(LDFLAGS)
+AC_SUBST(EXT_LIB_PATH)
+AC_SUBST(EXT_LIBS)
+
+AC_SUBST(LIBPREFIX)
+AC_SUBST(DLLDIR)
+AC_SUBST(EXT_LIB_PATH)
+
+
+# gcov compilation
+use_gcov=no
+AC_ARG_ENABLE([coverage], AS_HELP_STRING([--enable-coverage],
+ [Compile the library with code coverage support (default is NO)]),
+ [use_gcov=yes], [use_gcov=no])
+AM_CONDITIONAL([USE_COVERAGE], [test "x$use_gcov" = "xyes"])
+
+
+
+AC_CONFIG_FILES([ po/Makefile.in m4/Makefile
+Makefile
+contrib/Makefile
+src/Makefile
+src/arm/Makefile
+src/core/Makefile
+src/include/Makefile
+src/include/gnunet_directories.h
+src/util/Makefile
+src/fragmentation/Makefile
+src/hello/Makefile
+src/peerinfo/Makefile
+src/resolver/Makefile
+src/statistics/Makefile
+src/template/Makefile
+src/transport/Makefile
+])
+AC_OUTPUT
+
+# Finally: summary!
+
+# warn user if mysql found but not used due to version
+if test "$mysqlfail" = "true"
+then
+ AC_MSG_NOTICE([NOTICE: MySQL found, but too old. MySQL support will not be compiled.])
+fi
+
+# sqlite
+if test "x$sqlite" = "x0"
+then
+ AC_MSG_NOTICE([NOTICE: sqlite not found. sqLite support will not be compiled.])
+fi
+
+if test "x$dialog" != "x1" -a "x$cdialog" != "x1"
+then
+ AC_MSG_NOTICE([NOTICE: curses based gnunet-setup frontends will not be installed.])
+fi
+
+if test "x$lmhd" != "x1"
+then
+ AC_MSG_NOTICE([NOTICE: libmicrohttpd not found, http transport will not be installed.])
+fi
+
+AC_MSG_NOTICE([NOTICE: Database support is set to MySQL: $mysql, SQLite: $sqlite])
+
+# guile
+if test "x$guile" = "x0"
+then
+ AC_MSG_NOTICE([WARNING: Guile not found, gnunet-setup will not be installed.])
+fi
+
+if test "$enable_framework_build" = "yes"
+then
+ AC_MSG_NOTICE([NOTICE: Mac OS X framework build enabled.])
+fi
+
+AC_MSG_NOTICE([********************************************
+You can build GNUnet with
+ make install
+now. After that, install gnunet-gtk or gnunet-qt and run
+ gnunet-setup -d wizard-gtk
+(on graphical systems with GTK) or
+ gnunet-setup -d wizard-qt
+(on graphical systems with QT) or
+ gnunet-setup -d wizard-curses
+(on text-based systems with curses) in order to make important configuration
+settings. If neither works for you, you can find a template configuration
+file in the contrib/ subdirectory. Copy it to /etc/gnunetd.conf and modify it
+using your favourite text editor.
+********************************************])
diff --git a/contrib/Makefile.am b/contrib/Makefile.am
new file mode 100644
index 000000000..50758e9ad
--- /dev/null
+++ b/contrib/Makefile.am
@@ -0,0 +1,19 @@
+dist_pkgdata_DATA = \
+ gnunet-logo-color.png \
+ defaults.conf \
+ config.scm
+
+EXTRA_DIST = \
+ coverage.sh \
+ hostlist.cgi \
+ hostlist.php \
+ report.sh
+
+# init_gnunet_redhat \
+# init_gnunet_ubuntu \
+# visualize_stats.sh \
+# gnmessage.sh \
+# junkinsert.sh \
+# junklookup.sh \
+# namespacehelper.sh
+
diff --git a/contrib/config.scm b/contrib/config.scm
new file mode 100644
index 000000000..d7fd931fa
--- /dev/null
+++ b/contrib/config.scm
@@ -0,0 +1,1568 @@
+;; This is not a stand-alone guile application.
+;; It can only be executed from within gnunet-setup.
+;;
+;; GNUnet setup defines a function "build-tree-node"
+;; (with arguments section, option, description, help,
+;; children, visible, value and range) which is
+;; used by the script to create the configuration tree.
+;;
+;; GNUnet setup defines a function "change-visible"
+;; (with arguments context, section, option, yesno) which
+;; can be used by the script to dynamically change the
+;; visibility of options.
+;;
+;; GNUnet setup defines a function "get-option"
+;; (with arguments context, section, option) which
+;; can be used to query the current value of an option.
+;;
+;; GNUnet setup defines a function "set-option"
+;; (with arguments context, section, option, value) which
+;; can be used to set the value of an option.
+;;
+;;
+;; GNUnet setup requires two functions from this script.
+;; First, a function "gnunet-config-setup" which constructs the
+;; configuration tree.
+;;
+;; Second, a function "gnunet-config-change" which is notified whenever
+;; configuration options are changed; the script can then
+;; change the visibility of other options.
+
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+
+;; for GNU gettext
+(define (_ msg) msg)
+
+;; common string
+(define (nohelp)
+ (_ "No help available.") )
+
+(define (nathelp)
+ (_ "You can use 'make check' in src/transports/upnp/ to find out if your NAT supports UPnP. You should disable this option if you are sure that you are not behind a NAT. If your NAT box does not support UPnP, having this on will not do much harm (only cost a small amount of resources).") )
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+
+;; menu definitions
+
+;; meta-menu
+
+(define (meta-exp builder)
+ (builder
+ "Meta"
+ "EXPERIMENTAL"
+ (_ "Prompt for development and/or incomplete code")
+ (_
+"If EXPERIMENTAL is set to NO, options for experimental code are not shown. If in doubt, use NO.
+
+Some options apply to experimental code that maybe in a state of development where the functionality, stability, or the level of testing is not yet high enough for general use. These features are said to be of \"alpha\" quality. If a feature is currently in alpha, uninformed use is discouraged (since the developers then do not fancy \"Why doesn't this work?\" type messages).
+
+However, active testing and qualified feedback of these features is always welcome. Users should just be aware that alpha features may not meet the normal level of reliability or it may fail to work in some special cases. Bug reports are usually welcomed by the developers, but please read the documents <file://README> and <http://gnunet.org/faq.php3> and use <https://gnunet.org/mantis/> for how to report problems." )
+ '()
+ #t
+ #f
+ #f
+ 'advanced) )
+
+(define (meta-adv builder)
+ (builder
+ "Meta"
+ "ADVANCED"
+ (_ "Show options for advanced users")
+ (_
+"These are options that maybe difficult to understand for the beginner. These options typically refer to features that allow tweaking of the installation. If in a hurry, say NO." )
+ '()
+ #t
+ #t
+ #f
+ 'always) )
+
+(define (meta-rare builder)
+ (builder
+ "Meta"
+ "RARE"
+ (_ "Show rarely used options")
+ (_
+"These are options that hardly anyone actually needs. If you plan on doing development on GNUnet, you may want to look into these. If in doubt or in a hurry, say NO." )
+ '()
+ #t
+ #t
+ #f
+ 'advanced) )
+
+(define (meta builder)
+ (builder
+ "Meta"
+ ""
+ (_ "Meta-configuration")
+ (_ "Which level of configuration should be available")
+ (list
+ (meta-adv builder)
+ (meta-rare builder)
+ (meta-exp builder)
+ )
+ #t
+ #f
+ #f
+ 'always) )
+
+;; fundamentals
+
+(define (paths-home builder)
+ (builder
+ "PATHS"
+ "GNUNETD_HOME"
+ (_ "Full pathname of GNUnet HOME directory")
+ (_
+"This gives the root-directory of the GNUnet installation. Make sure there is some space left in that directory. :-) Users inserting or indexing files will be able to store data in this directory up to the (global) quota specified below. Having a few gigabytes of free space is recommended." )
+ '()
+ #t
+ "/var/lib/gnunet"
+ '()
+ 'always) )
+
+;; General menu
+
+(define (fs-path builder)
+ (builder
+ "FS"
+ "DIR"
+ (_ "Full pathname of GNUnet directory for file-sharing data")
+ (nohelp)
+ '()
+ #t
+ "$GNUNETD_HOME/data/fs"
+ '()
+ 'always) )
+
+(define (kv-path builder)
+ (builder
+ "KEYVALUE_DATABASE"
+ "DIR"
+ (_ "Full pathname to the directory with the key-value database")
+ (_ "Note that the kvstore is currently not used.")
+ '()
+ #f
+ "$GNUNETD_HOME/kvstore/"
+ '()
+ 'never) )
+
+(define (index-path builder)
+ (builder
+ "FS"
+ "INDEX-DIRECTORY"
+ (_ "Full pathname of GNUnet directory for indexed files symbolic links")
+ (nohelp)
+ '()
+ #t
+ "$GNUNETD_HOME/data/shared"
+ '()
+ 'always) )
+
+(define (general-helloexpires builder)
+ (builder
+ "GNUNETD"
+ "HELLOEXPIRES"
+ (_ "How many minutes should peer advertisements last?")
+ (_
+"How many minutes is the current IP valid? (GNUnet will sign HELLO messages with this expiration timeline. If you are on dialup, 60 (for 1 hour) is suggested. If you have a static IP address, you may want to set this to a large value (say 14400). The default is 1440 (1 day). If your IP changes periodically, you will want to choose an expiry period smaller than the frequency with which your IP changes." )
+ '()
+ #t
+ 1440
+ (cons 1 14400)
+ 'advanced) )
+
+(define (general-hostlisturl builder)
+ (builder
+ "GNUNETD"
+ "HOSTLISTURL"
+ (_ "Where can GNUnet find an initial list of peers?")
+ (_
+"GNUnet can automatically update the hostlist from the web. While GNUnet internally communicates which hosts are online, it is typically a good idea to get a fresh hostlist whenever gnunetd starts from the WEB. By setting this option, you can specify from which server gnunetd should try to download the hostlist. The default should be fine for now.
+
+The general format is a list of space-separated URLs. Each URL must have the format http://HOSTNAME/FILENAME
+
+If you want to setup an alternate hostlist server, you must run a permanent node and \"cat data/hosts/* > hostlist\" every few minutes to keep the list up-to-date.
+
+If you do not specify a HOSTLISTURL, you must copy valid hostkeys to data/hosts manually.")
+ '()
+ #t
+ "http://gnunet.org/hostlist.php http://gnunet.mine.nu:8081/hostlist http://vserver1236.vserver-on.de/hostlist-074"
+ '()
+ 'always) )
+
+(define (general-http-proxy builder)
+ (builder
+ "GNUNETD"
+ "HTTP-PROXY"
+ (_ "HTTP Proxy Server")
+ (_
+"If you have to use a proxy for outbound HTTP connections, specify the proxy configuration here. Default is no proxy." )
+ '()
+ #t
+ ""
+ '()
+ 'advanced) )
+
+
+(define (general-hosts builder)
+ (builder
+ "GNUNETD"
+ "HOSTS"
+ (_ "Name of the directory where gnunetd should store contact information about peers")
+ (_
+"Unless you want to share the directory directly using a webserver, the default is most likely just fine." )
+ '()
+ #t
+ "$GNUNETD_HOME/data/hosts/"
+ '()
+ 'rare) )
+
+
+;; logging options
+
+(define (log-level description option builder)
+ (builder
+ "LOGGING"
+ option
+ description
+ (nohelp)
+ '()
+ #t
+ "WARNING"
+ (list "SC" "NOTHING" "FATAL" "ERROR" "WARNING" "INFO" "STATUS" "DEBUG")
+ 'always))
+
+(define (log-keeplog builder)
+ (builder
+ "GNUNETD"
+ "KEEPLOG"
+ (_ "How long should logs be kept?")
+ (_
+"How long should logs be kept? If you specify a value greater than zero, a log is created each day with the date appended to its filename. These logs are deleted after $KEEPLOG days. To keep logs forever, set this value to 0." )
+ '()
+ #t
+ 3
+ (cons 0 36500)
+ 'advanced) )
+
+(define (daemon-fdlimit builder)
+ (builder
+ "GNUNETD"
+ "FDLIMIT"
+ (_ "What maximum number of open file descriptors should be requested from the OS?")
+ (_
+"The default of 1024 should be fine for most systems. If your system can support more, increasing the number might help support additional clients on machines with plenty of bandwidth. For embedded systems, a smaller number might be acceptable. A value of 0 will leave the descriptor limit untouched. This option is mostly for OS X systems where the default is too low. Note that if gnunetd cannot obtain the desired number of file descriptors from the operating system, it will print a warning and try to run with what it is given." )
+ '()
+ #t
+ 1024
+ (cons 64 65536)
+ 'rare) )
+
+(define (log-logfile builder)
+ (builder
+ "GNUNETD"
+ "LOGFILE"
+ (_ "Where should gnunetd write the logs?")
+ (nohelp)
+ '()
+ #f
+ "$GNUNETD_HOME/daemon-logs"
+ '()
+ 'rare) )
+
+(define (log-devel builder)
+ (builder
+ "LOGGING"
+ "DEVELOPER"
+ (_ "Enable for extra-verbose logging.")
+ (nohelp)
+ '()
+ #f
+ #f
+ #f
+ 'rare) )
+
+(define (logging builder)
+ (builder
+ "LOGGING"
+ ""
+ (_ "Logging")
+ (_ "Specify which system messages should be logged how")
+ (list
+ (log-keeplog builder)
+ (log-logfile builder)
+ (log-devel builder)
+ (log-level (_ "Logging of events for users") "USER-LEVEL" builder)
+ (log-level (_ "Logging of events for the system administrator") "ADMIN-LEVEL" builder)
+ )
+ #t
+ #f
+ #f
+ 'advanced) )
+
+
+(define (general-pidfile builder)
+ (builder
+ "GNUNETD"
+ "PIDFILE"
+ (_ "Where should gnunetd write the PID?")
+ (_ "The default is no longer /var/run/gnunetd.pid since we could not delete the file on shutdown at that location." )
+ '()
+ #f
+ "/var/run/gnunetd/pid"
+ '()
+ 'rare) )
+
+
+(define (general-username builder)
+ (builder
+ "GNUNETD"
+ "USER"
+ (_ "As which user should gnunetd run?")
+ (_
+"Empty means \"current user\". On computer startup, it is root/SYSTEM. Under Windows, this setting affects the creation of a new system service only.")
+ '()
+ #f
+ ""
+ '()
+ 'advanced) )
+
+
+
+(define (general-autostart builder)
+ (builder
+ "GNUNETD"
+ "AUTOSTART"
+ (_ "Should gnunetd be automatically started when the system boots?")
+ (_ "Set to YES if gnunetd should be automatically started on boot. If this option is set, gnunet-setup will install a script to start the daemon upon completion. This option may not work on all systems.")
+ '()
+ #t
+ #f
+ #f
+ 'rare) )
+
+
+(define (general-transports builder)
+ (builder
+ "GNUNETD"
+ "TRANSPORTS"
+ (_ "Which transport mechanisms should GNUnet use?")
+ (_
+"Use a space-separated list of modules, e.g. \"udp smtp tcp\". The available transports are udp, tcp, http, smtp and nat.
+
+Loading the 'nat' and 'tcp' modules is required for peers behind NAT boxes that cannot directly be reached from the outside. Peers that are NOT behind a NAT box and that want to *allow* peers that ARE behind a NAT box to connect must ALSO load the 'nat' module. Note that the actual transfer will always be via tcp initiated by the peer behind the NAT box. The nat transport requires the use of tcp, http and/or smtp in addition to nat itself.")
+ '()
+ #t
+ "udp tcp http nat"
+ (list "MC" "udp" "tcp" "nat" "http" "smtp")
+ 'always) )
+
+
+(define (general-applications builder)
+ (builder
+ "GNUNETD"
+ "APPLICATIONS"
+ (_ "Which applications should gnunetd support?")
+ (_
+"Whenever this option is changed, you MUST run gnunet-update. Currently, the available applications are:
+
+advertising: advertises your peer to other peers. Without it, your peer will not participate in informing peers about other peers. You should always load this module.
+
+getoption: allows clients to query gnunetd about the values of various configuration options. Many tools need this. You should always load this module.
+
+stats: allows tools like gnunet-stats and gnunet-gtk to query gnunetd about various statistics. This information is usually quite useful to diagnose errors, hence it is recommended that you load this module.
+
+traffic: keeps track of how many messages were recently received and transmitted. This information can then be used to establish how much cover traffic is currently available. The amount of cover traffic becomes important if you want to make anonymous requests with an anonymity level that is greater than one. It is recommended that you load this module.
+
+fs: needed for anonymous file sharing. You should always load this module.
+
+hostlist: integrated hostlist HTTP server. Useful if you want to offer a hostlist and running Apache would be overkill.
+
+chat: broadcast chat (demo-application, ALPHA quality). Required for gnunet-chat. Note that the current implementation of chat is not considered to be secure.
+
+tbench: benchmark transport performance. Required for gnunet-tbench. Note that tbench allows other users to abuse your resources.
+
+tracekit: topology visualization toolkit. Required for gnunet-tracekit. Note that loading tracekit will make it slightly easier for an adversary to compromise your anonymity." )
+ '()
+ #t
+ "advertising getoption fs stats traffic"
+ (list "MC" "advertising" "getoption" "fs" "hostlist" "stats" "traffic" "dht" "tracekit" "tbench" "vpn" "chat")
+ 'always) )
+
+
+
+(define (tcpserver-disable builder)
+ (builder
+ "TCPSERVER"
+ "DISABLE"
+ (_ "Disable client-server connections")
+ (_ "This option can be used to tell gnunetd not to open the client port. When run like this, gnunetd will participate as a peer in the network but not support any user interfaces. This may be useful for headless systems that are never expected to have end-user interactions. Note that this will also prevent you from running diagnostic tools like gnunet-stats!")
+ '()
+ #t
+ #f
+ #f
+ 'rare) )
+
+
+(define (gnunetd-disable-ipv6 builder)
+ (builder
+ "GNUNETD"
+ "DISABLE-IPV6"
+ (_ "YES disables IPv6 support, NO enables IPv6 support")
+ (_ "This option may be useful on peers where the kernel does not support IPv6. You might also want to set this option if you do not have an IPv6 network connection.")
+ '()
+ #t
+ #t
+ #t
+ 'advanced) )
+
+
+(define (gnunetd-private-network builder)
+ (builder
+ "GNUNETD"
+ "PRIVATE-NETWORK"
+ (_ "Disable peer discovery")
+ (_ "The option 'PRIVATE-NETWORK' can be used to limit the connections of this peer to peers of which the hostkey has been copied by hand to data/hosts; if this option is given, GNUnet will not accept advertisements of peers that the local node does not already know about. Note that in order for this option to work, HOSTLISTURL should either not be set at all or be set to a trusted peer that only advertises the private network. Also, the option does NOT work at the moment if the NAT transport is loaded; for that, a couple of lines above would need some minor editing :-).")
+ '()
+ #t
+ #f
+ #f
+ 'rare) )
+
+(define (network-disable-advertising builder)
+ (builder
+ "NETWORK"
+ "DISABLE-ADVERTISEMENTS"
+ (_ "Disable advertising this peer to other peers")
+ (nohelp)
+ '()
+ #t
+ #f
+ #f
+ 'rare) )
+
+(define (network-disable-autoconnect builder)
+ (builder
+ "NETWORK"
+ "DISABLE-AUTOCONNECT"
+ (_ "Disable automatic establishment of connections")
+ (_ "If this option is enabled, GNUnet will not automatically establish connections to other peers, but instead wait for applications to specifically request connections to other peers (or for other peers to connect to us).")
+ '()
+ #t
+ #f
+ #f
+ 'experimental) )
+
+(define (network-disable-helloexchange builder)
+ (builder
+ "NETWORK"
+ "HELLOEXCHANGE"
+ (_ "Enable advertising of other peers by this peer")
+ (_ "This option may be useful during testing, but turning it off is dangerous! If in any doubt, set it to YES (which is the default).")
+ '()
+ #t
+ #t
+ #t
+ 'experimental) )
+
+(define (network-port builder)
+ (builder
+ "NETWORK"
+ "PORT"
+ (_ "Port for communication with GNUnet user interfaces")
+ (_ "Which is the client-server port that is used between gnunetd and the clients (TCP only). You may firewall this port for non-local machines (but you do not have to since GNUnet will perform access control and only allow connections from machines that are listed under TRUSTED).")
+ '()
+ #t
+ 2087
+ (cons 1 65535)
+ 'advanced) )
+
+(define (hostlist-port builder)
+ (builder
+ "HOSTLIST"
+ "PORT"
+ (_ "Port for the integrated hostlist HTTP server")
+ (nohelp)
+ '()
+ #t
+ 8080
+ (cons 1 65535)
+ 'hostlist-loaded) )
+
+(define (network-trusted builder)
+ (builder
+ "NETWORK"
+ "TRUSTED"
+ (_ "IPv4 networks allowed to use gnunetd server")
+ (_ "This option specifies which hosts are trusted enough to connect as clients (to the TCP port). This is useful if you run gnunetd on one host of your network and want to allow all other hosts to use this node as their server. By default, this is set to 'loopback only'. The format is IP/NETMASK where the IP is specified in dotted-decimal and the netmask either in CIDR notation (/16) or in dotted decimal (255.255.0.0). Several entries must be separated by a semicolon, spaces are not allowed.")
+ '()
+ #t
+ "127.0.0.0/8;"
+ '()
+ 'advanced) )
+
+(define (network-trusted6 builder)
+ (builder
+ "NETWORK"
+ "TRUSTED6"
+ (_ "IPv6 networks allowed to use gnunetd server")
+ (_ "This option specifies which hosts are trusted enough to connect as clients (to the TCP port). This is useful if you run gnunetd on one host of your network and want to allow all other hosts to use this node as their server. By default, this is set to 'loopback only'. The format is IP/NETMASK where the IP is specified in dotted-decimal and the netmask either in CIDR notation (/16) or in dotted decimal (255.255.0.0). Several entries must be separated by a semicolon, spaces are not allowed.")
+ '()
+ #t
+ "::1;"
+ '()
+ 'ipv6) )
+
+
+(define (limit-allow builder)
+ (builder
+ "GNUNETD"
+ "LIMIT-ALLOW"
+ (_ "Limit connections to the specfied set of peers.")
+ (_ "If this option is not set, any peer is allowed to connect. If it is set, only the specified peers are allowed. Specify the list of peer IDs (not IPs!)")
+ '()
+ #t
+ ""
+ '()
+ 'rare))
+
+(define (general-groupname builder)
+ (builder
+ "GNUNETD"
+ "GROUP"
+ (_ "Run gnunetd as this group.")
+ (_ "When started as root, gnunetd will change permissions to the given group.")
+ '()
+ #t
+ "gnunetd"
+ '()
+ 'advanced))
+
+(define (limit-deny builder)
+ (builder
+ "GNUNETD"
+ "LIMIT-DENY"
+ (_ "Prevent the specfied set of peers from connecting.")
+ (_ "If this option is not set, any peer is allowed to connect. If the ID of a peer is listed here, connections from that peer will be refused. Specify the list of peer IDs (not IPs!)")
+ '()
+ #t
+ ""
+ '()
+ 'rare))
+
+(define (advertising builder)
+ (builder
+ "ADVERTISING"
+ ""
+ (_ "Topology Maintenance")
+ (_ "Rarely used settings for peer advertisements and connections")
+ (list
+ (general-helloexpires builder)
+ (tcpserver-disable builder)
+ (gnunetd-private-network builder)
+ (network-disable-advertising builder)
+ (network-disable-helloexchange builder)
+ (network-disable-autoconnect builder)
+ (limit-allow builder)
+ (limit-deny builder)
+ )
+ #t
+ #f
+ #f
+ 'rare) )
+
+(define (general builder)
+ (builder
+ "GNUNETD"
+ ""
+ (_ "General settings")
+ (_ "Settings that change the behavior of GNUnet in general")
+ (list
+ (network-port builder)
+ (hostlist-port builder)
+ (network-trusted builder)
+ (general-hostlisturl builder)
+ (general-hosts builder)
+ (general-http-proxy builder)
+ (f2f builder)
+ (fs-path builder)
+ (index-path builder)
+ (daemon-fdlimit builder)
+ (gnunetd-disable-ipv6 builder)
+ (general-username builder)
+ (general-groupname builder)
+ (general-pidfile builder)
+ (general-autostart builder)
+ )
+ #t
+ #f
+ #f
+ 'always) )
+
+(define (modules builder)
+ (builder
+ "MODULES"
+ ""
+ (_ "Modules")
+ (_ "Settings that select specific implementations for GNUnet modules")
+ (list
+ (modules-sqstore builder)
+ (modules-dstore builder)
+ (modules-topology builder)
+ )
+ #t
+ #f
+ #f
+ 'advanced) )
+
+
+
+
+(define (fundamentals builder)
+ (builder
+ "PATHS"
+ ""
+ (_ "Fundamentals")
+ ""
+ (list
+ (paths-home builder)
+ (general-applications builder)
+ (general-transports builder)
+ (modules builder)
+ )
+ #t
+ #f
+ #f
+ 'always) )
+
+
+;; modules menu
+
+(define (modules-sqstore builder)
+ (builder
+ "MODULES"
+ "sqstore"
+ (_ "Which database should be used?")
+ (_
+"Which database should be used? The options are \"sqstore_sqlite\", \"sqstore_postgres\" and \"sqstore_mysql\". You must run gnunet-update after changing this value!
+
+In order to use MySQL or Postgres, you must configure the respective database, which is relatively simple. Read the file doc/README.mysql or doc/README.postgres for how to setup the respective database." )
+ '()
+ #t
+ "sqstore_sqlite"
+ (list "SC" "sqstore_sqlite" "sqstore_postgres" "sqstore_mysql")
+ 'fs-loaded) )
+
+(define (modules-dstore builder)
+ (builder
+ "MODULES"
+ "dstore"
+ (_ "Which topology should be used?")
+ (_ "Which database should be used for the temporary datastore of the DHT?" )
+ '()
+ #t
+ "dstore_sqlite"
+ (list "SC" "dstore_sqlite" "dstore_mysql")
+ 'advanced) )
+
+
+(define (modules-topology builder)
+ (builder
+ "MODULES"
+ "topology"
+ (_ "Which topology should be used?")
+ (_
+"Which topology should be used? The only option at the moment is \"topology_default\"" )
+ '()
+ #t
+ "topology_default"
+ (list "SC" "topology_default")
+ 'rare) )
+
+
+;; f2f menu
+
+(define (f2f-minimum builder)
+ (builder
+ "F2F"
+ "MINIMUM"
+ (_ "The minimum number of connected friends before this peer is allowed to connect to peers that are not listed as friends")
+ (_ "Note that this option does not guarantee that the peer will be able to connect to the specified number of friends. Also, if the peer had connected to a sufficient number of friends and then established non-friend connections, some of the friends may drop out of the network, temporarily resulting in having fewer than the specified number of friends connected while being connected to non-friends. However, it is guaranteed that the peer itself will never choose to drop a friend's connection if this would result in dropping below the specified number of friends (unless that number is higher than the overall connection target).")
+ '()
+ #t
+ 0
+ (cons 0 1024)
+ 'f2fr) )
+
+(define (f2f-restrict builder)
+ (builder
+ "F2F"
+ "FRIENDS-ONLY"
+ (_ "If set to YES, the peer is only allowed to connect to other peers that are explicitly specified as friends")
+ (_ "Use YES only if you have (trustworthy) friends that use GNUnet and are afraid of establishing (direct) connections to unknown peers")
+ '()
+ #t
+ #f
+ #f
+ 'advanced) )
+
+(define (f2f-friends builder)
+ (builder
+ "F2F"
+ "FRIENDS"
+ (_ "List of friends for friend-to-friend topology")
+ (_ "Specifies the name of a file which contains a list of GNUnet peer IDs that are friends. If used with the friend-to-friend topology, this will ensure that GNUnet only connects to these peers (via any available transport).")
+ '()
+ #f
+ "$GNUNETD_HOME/friends"
+ '()
+ 'f2f) )
+
+(define (f2f builder)
+ (builder
+ "F2F"
+ ""
+ (_ "Friend-to-Friend Topology Specification")
+ (_ "Settings for restricting connections to friends")
+ (list
+ (f2f-restrict builder)
+ (f2f-minimum builder)
+ (f2f-friends builder)
+ )
+ #t
+ #f
+ #f
+ 'advanced) )
+
+;; mysql menu
+
+(define (mysql-database builder)
+ (builder
+ "MYSQL"
+ "DATABASE"
+ (_ "Name of the MySQL database GNUnet should use")
+ (nohelp)
+ '()
+ #t
+ "gnunet"
+ '()
+ 'mysql) )
+
+(define (mysql-config builder)
+ (builder
+ "MYSQL"
+ "CONFIG"
+ (_ "Configuration file that specifies the MySQL username and password")
+ (nohelp)
+ '()
+ #t
+ "/etc/my.cnf"
+ '()
+ 'mysql) )
+
+(define (mysql builder)
+ (builder
+ "MYSQL"
+ ""
+ (_ "Configuration of the MySQL database")
+ (nohelp)
+ (list
+ (mysql-config builder)
+ (mysql-database builder)
+ )
+ #t
+ #f
+ #f
+ 'mysql) )
+
+
+
+;; applications menu
+
+(define (fs-quota builder)
+ (builder
+ "FS"
+ "QUOTA"
+ (_ "MB of diskspace GNUnet can use for anonymous file sharing")
+ (_
+"How much disk space (MB) is GNUnet allowed to use for anonymous file sharing? This does not take indexed files into account, only the space directly used by GNUnet is accounted for. GNUnet will gather content from the network if the current space-consumption is below the number given here (and if content migration is allowed below).
+
+Note that if you change the quota, you need to run gnunet-update afterwards.")
+ '()
+ #t
+ 1024
+ (cons 1 1000000)
+ 'always))
+
+
+(define (fs-migration-buffer builder)
+ (builder
+ "FS"
+ "MIGRATIONBUFFERSIZE"
+ (_ "Number of entries in the migration buffer")
+ (_ "Each entry uses about 32k of memory. More entries can reduce disk IO and CPU usage at the expense of having gnunetd use more memory. Very large values may again increase CPU usage. A value of 0 will prevent your peer from sending unsolicited responses.")
+ '()
+ #t
+ 64
+ (cons 0 1048576)
+ 'always))
+
+
+(define (fs-gap-tablesize builder)
+ (builder
+ "GAP"
+ "TABLESIZE"
+ (_ "Size of the routing table for anonymous routing.")
+ (nohelp)
+ '()
+ #t
+ 65536
+ (cons 1024 1048576)
+ 'rare))
+
+(define (fs-dht-tablesize builder)
+ (builder
+ "DHT"
+ "TABLESIZE"
+ (_ "Size of the routing table for DHT routing.")
+ (nohelp)
+ '()
+ #t
+ 1024
+ (cons 128 1048576)
+ 'rare))
+
+
+(define (fs-activemigration builder)
+ (builder
+ "FS"
+ "ACTIVEMIGRATION"
+ (_ "Allow migrating content to this peer.")
+ (_
+"If you say yes here, GNUnet will migrate content to your server, and you will not be able to control what data is stored on your machine.
+
+If you activate it, you can claim for *all* the non-indexed (-n to gnunet-insert) content that you did not know what it was even if an adversary takes control of your machine. If you do not activate it, it is obvious that you have knowledge of all the content that is hosted on your machine and thus can be considered liable for it.")
+ '()
+ #t
+ #f
+ #f
+ 'advanced))
+
+
+(define (dstore-quota builder)
+ (builder
+ "DSTORE"
+ "QUOTA"
+ (_ "MB of diskspace GNUnet can use for caching DHT index data (the data will be stored in /tmp)")
+ (_ "DHT index data is inherently small and expires comparatively quickly. It is deleted whenever gnunetd is shut down.
+
+The size of the DSTORE QUOTA is specified in MB.")
+ '()
+ #t
+ 1
+ (cons 1 1024)
+ 'rare))
+
+
+(define (fs builder)
+ (builder
+ "FS"
+ ""
+ (_ "Options for anonymous file sharing")
+ (nohelp)
+ (list
+ (fs-quota builder)
+ (fs-activemigration builder)
+ (fs-gap-tablesize builder)
+ (fs-dht-tablesize builder)
+ (dstore-quota builder)
+ (mysql builder)
+ )
+ #t
+ #t
+ #f
+ 'fs-loaded))
+
+(define (applications builder)
+ (builder
+ ""
+ ""
+ (_ "Applications")
+ (nohelp)
+ (list
+ (fs builder)
+ )
+ #t
+ #f
+ #f
+ 'always) )
+
+;; transport menus
+
+(define (nat builder)
+ (builder
+ "NAT"
+ "LIMITED"
+ (_ "Is this machine unreachable behind a NAT?")
+ (_ "Set to YES if this machine is behind a NAT that limits connections from the outside to the GNUnet port and that cannot be traversed using UPnP. Note that if you have configured your NAT box to allow direct connections from other machines to the GNUnet ports or if GNUnet can open ports using UPnP, you should set the option to NO. Set this only to YES if other peers cannot contact you directly. You can use 'make check' in src/transports/upnp/ to find out if your NAT supports UPnP. You can also use gnunet-transport-check with the '-p' option in order to determine which setting results in more connections. Use YES only if you get no connections otherwise. Set to AUTO to use YES if the local IP is belongs to a private IP network and NO otherwise.")
+ '()
+ #t
+ "AUTO"
+ (list "SC" "YES" "AUTO" "NO")
+ 'nat-loaded) )
+
+(define (tcp-port builder)
+ (builder
+ "TCP"
+ "PORT"
+ (_ "Which port should be used by the TCP IPv4 transport?")
+ (nohelp)
+ '()
+ #t
+ 2086
+ (cons 0 65535)
+ 'advanced))
+
+(define (tcp-upnp builder)
+ (builder
+ "TCP"
+ "UPNP"
+ (_ "Should we try to determine our external IP using UPnP?")
+ (nathelp)
+ '()
+ #t
+ #t
+ #f
+ 'tcp-loaded))
+
+(define (tcp-blacklist builder)
+ (builder
+ "TCP"
+ "BLACKLISTV4"
+ (_ "Which IP(v4)s are not allowed to connect?")
+ (nohelp)
+ '()
+ #t
+ "127.0.0.1;"
+ '()
+ 'advanced))
+
+(define (tcp-whitelist builder)
+ (builder
+ "TCP"
+ "WHITELISTV4"
+ (_ "Which IP(v4)s are allowed to connect? Leave empty to use the IP of your primary network interface.")
+ (nohelp)
+ '()
+ #t
+ ""
+ '()
+ 'advanced))
+
+(define (tcp6-blacklist builder)
+ (builder
+ "TCP"
+ "BLACKLISTV6"
+ (_ "Which IPv6s are not allowed to connect?")
+ (nohelp)
+ '()
+ #t
+ ""
+ '()
+ 'ipv6))
+
+(define (tcp6-whitelist builder)
+ (builder
+ "TCP"
+ "WHITELISTV6"
+ (_ "Which IPv6s are allowed to connect? Leave empty to allow any IP to connect.")
+ (nohelp)
+ '()
+ #t
+ ""
+ '()
+ 'ipv6))
+
+
+(define (tcp builder)
+ (builder
+ "TCP"
+ ""
+ (_ "TCP transport")
+ (nohelp)
+ (list
+ (tcp-port builder)
+ (tcp-upnp builder)
+ (tcp-blacklist builder)
+ (tcp-whitelist builder)
+ (tcp6-blacklist builder)
+ (tcp6-whitelist builder)
+ )
+ #t
+ #f
+ #f
+ 'tcp-loaded) )
+
+
+(define (http-port builder)
+ (builder
+ "HTTP"
+ "PORT"
+ (_ "Which port should be used by the HTTP transport?")
+ (nohelp)
+ '()
+ #t
+ 1080
+ (cons 0 65535)
+ 'advanced))
+
+(define (http-upnp builder)
+ (builder
+ "HTTP"
+ "UPNP"
+ (_ "Should we try to determine our external IP using UPnP?")
+ (nathelp)
+ '()
+ #t
+ #t
+ #f
+ 'http-port-nz))
+
+(define (http-advertised-port builder)
+ (builder
+ "HTTP"
+ "ADVERTISED-PORT"
+ (_ "Which is the external port of the HTTP transport?")
+ (_ "Use this option if your firewall maps, say, port 80 to your real HTTP port. This can be useful in making the HTTP messages appear even more legit (without needing to run gnunetd as root due to the use of a privileged port).")
+ '()
+ #t
+ 80
+ (cons 0 65535)
+ 'advanced))
+
+(define (http builder)
+ (builder
+ "HTTP"
+ ""
+ (_ "HTTP transport")
+ (nohelp)
+ (list
+ (http-port builder)
+ (http-advertised-port builder)
+ (http-upnp builder)
+ )
+ #t
+ #f
+ #f
+ 'http-loaded) )
+
+
+
+
+(define (smtp-mtu builder)
+ (builder
+ "SMTP"
+ "MTU"
+ (_ "What is the maximum transfer unit for SMTP?")
+ (nohelp)
+ '()
+ #t
+ 65528
+ (cons 1200 65528)
+ 'smtp-loaded))
+
+(define (smtp-ratelimit builder)
+ (builder
+ "SMTP"
+ "RATELIMIT"
+ (_ "What is the maximum number of e-mails that gnunetd would be allowed to send per hour?")
+ (_ "Use 0 for unlimited")
+ '()
+ #t
+ 0
+ (cons 0 1048576)
+ 'smtp-loaded))
+
+(define (smtp-email builder)
+ (builder
+ "SMTP"
+ "EMAIL"
+ (_ "Which e-mail address should be used to send e-mail to this peer?")
+ (_ "You must make sure that e-mail received at this address is forwarded to the PIPE which is read by gnunetd. Use the FILTER option to filter e-mail with procmail and the PIPE option to set the name of the pipe.")
+ '()
+ #t
+ "gnunet@localhost"
+ '()
+ 'smtp-loaded))
+
+(define (smtp-filter builder)
+ (builder
+ "SMTP"
+ "FILTER"
+ (_ "Which header line should other peers include in e-mails to enable filtering?")
+ (_ "You can specify a header line here which can then be used by procmail to filter GNUnet e-mail from your inbox and forward it to gnunetd.")
+ '()
+ #t
+ "X-mailer: GNUnet"
+ '()
+ 'smtp-loaded))
+
+(define (smtp-pipe builder)
+ (builder
+ "SMTP"
+ "PIPE"
+ (_ "What is the filename of the pipe where gnunetd can read its e-mail?")
+ (_ "Have a look at contrib/dot-procmailrc for an example .procmailrc file.")
+ '()
+ #t
+ "$GNUNETD_HOME/smtp-pipe"
+ '()
+ 'smtp-loaded))
+
+(define (smtp-server builder)
+ (builder
+ "SMTP"
+ "SERVER"
+ (_ "What is the name and port of the server for outgoing e-mail?")
+ (_ "The basic format is HOSTNAME:PORT.")
+ '()
+ #t
+ "localhost:25"
+ '()
+ 'smtp-loaded))
+
+(define (smtp builder)
+ (builder
+ "SMTP"
+ ""
+ (_ "SMTP transport")
+ (nohelp)
+ (list
+ (smtp-email builder)
+ (smtp-ratelimit builder)
+ (smtp-filter builder)
+ (smtp-pipe builder)
+ (smtp-server builder)
+ (smtp-mtu builder)
+ )
+ #t
+ #f
+ #f
+ 'smtp-loaded) )
+
+
+
+
+
+(define (udp-port builder)
+ (builder
+ "UDP"
+ "PORT"
+ (_ "Which port should be used by the UDP IPv4 transport?")
+ (nohelp)
+ '()
+ #t
+ 2086
+ (cons 0 65535)
+ 'advanced))
+
+(define (udp-upnp builder)
+ (builder
+ "UDP"
+ "UPNP"
+ (_ "Should we try to determine our external IP using UPnP?")
+ (nathelp)
+ '()
+ #t
+ #t
+ #f
+ 'udp-port-nz))
+
+(define (udp-mtu builder)
+ (builder
+ "UDP"
+ "MTU"
+ (_ "What is the maximum transfer unit for UDP?")
+ (nohelp)
+ '()
+ #t
+ 1472
+ (cons 1200 65500)
+ 'rare))
+
+(define (udp-blacklist builder)
+ (builder
+ "UDP"
+ "BLACKLISTV4"
+ (_ "Which IPs are not allowed to connect?")
+ (nohelp)
+ '()
+ #t
+ "127.0.0.1;"
+ '()
+ 'advanced))
+
+(define (udp-whitelist builder)
+ (builder
+ "UDP"
+ "WHITELISTV4"
+ (_ "Which IPs are allowed to connect? Leave empty to allow connections from any IP.")
+ (nohelp)
+ '()
+ #t
+ ""
+ '()
+ 'advanced))
+
+(define (udp6-blacklist builder)
+ (builder
+ "UDP"
+ "BLACKLISTV6"
+ (_ "Which IPv6s are not allowed to connect?")
+ (nohelp)
+ '()
+ #t
+ ""
+ '()
+ 'ipv6))
+
+(define (udp6-whitelist builder)
+ (builder
+ "UDP6"
+ "WHITELISTV6"
+ (_ "Which IPv6s are allowed to connect? Leave empty to allow any IP to connect.")
+ (nohelp)
+ '()
+ #t
+ ""
+ '()
+ 'ipv6))
+
+(define (udp builder)
+ (builder
+ "UDP"
+ ""
+ (_ "UDP transport")
+ (nohelp)
+ (list
+ (udp-port builder)
+ (udp-upnp builder)
+ (udp-mtu builder)
+ (udp-blacklist builder)
+ (udp-whitelist builder)
+ (udp6-blacklist builder)
+ (udp6-whitelist builder)
+ )
+ #t
+ #f
+ #f
+ 'udp-loaded) )
+
+
+
+(define (network-interface builder)
+ (builder
+ "NETWORK"
+ "INTERFACE"
+ (_ "Network interface")
+ (nohelp)
+ '()
+ #t
+ "eth0"
+ '()
+ 'advanced) )
+
+(define (network-ip builder)
+ (builder
+ "NETWORK"
+ "IP"
+ (_ "External IP address (leave empty to try auto-detection)")
+ (nohelp)
+ '()
+ #t
+ ""
+ '()
+ 'advanced) )
+
+(define (network-ip6 builder)
+ (builder
+ "NETWORK"
+ "IP6"
+ (_ "External IPv6 address (leave empty to try auto-detection)")
+ (nohelp)
+ '()
+ #t
+ ""
+ '()
+ 'ipv6) )
+
+(define (transports builder)
+ (builder
+ ""
+ ""
+ (_ "Transports")
+ (nohelp)
+ (list
+ (nat builder)
+ (network-interface builder)
+ (network-ip builder)
+ (tcp builder)
+ (udp builder)
+ (http builder)
+ (smtp builder)
+ )
+ #t
+ #f
+ #f
+ 'always) )
+
+
+
+(define (load-maxdown builder)
+ (builder
+ "LOAD"
+ "MAXNETDOWNBPSTOTAL"
+ (_ "What is the maximum number of bytes per second that we may receive?")
+ (nohelp)
+ '()
+ #t
+ 50000
+ (cons 1 999999999)
+ 'always))
+
+(define (load-maxup builder)
+ (builder
+ "LOAD"
+ "MAXNETUPBPSTOTAL"
+ (_ "What is the maximum number of bytes per second that we may send?")
+ (nohelp)
+ '()
+ #t
+ 50000
+ (cons 1 999999999)
+ 'always))
+
+(define (load-cpu builder)
+ (builder
+ "LOAD"
+ "MAXCPULOAD"
+ (_ "What is the maximum CPU load (percentage)?")
+ (_ "The highest tolerable CPU load. Load here always refers to the total system load, that is it includes CPU utilization by other processes. A value of 50 means that once your 1 minute-load average goes over 50% non-idle, GNUnet will try to reduce CPU consumption until the load goes under the threshold. Reasonable values are typically between 50 and 100. Multiprocessors may use values above 100." )
+ '()
+ #t
+ 100
+ (cons 0 10000)
+ 'always))
+
+(define (load-io builder)
+ (builder
+ "LOAD"
+ "MAXIOLOAD"
+ (_ "What is the maximum IO load (permille)?")
+ (_
+"The highest tolerable IO load. Load here refers to the percentage of CPU cycles wasted waiting for IO for the entire system, that is it includes disk utilization by other processes. A value of 10 means that once the average number of cycles wasted waiting for IO is more than 10% non-idle, GNUnet will try to reduce IO until the load goes under the threshold. Reasonable values are typically between 10 and 75." )
+ '()
+ #t
+ 50
+ (cons 0 10000)
+ 'advanced))
+
+(define (load-cpu-hard builder)
+ (builder
+ "LOAD"
+ "HARDCPULIMIT"
+ (_ "What is the maximum CPU load (hard limit)?")
+ (_ "The highest tolerable CPU load. This is the hard limit, so once it is reached, gnunetd will start to massively drop data to reduce the load. Use with caution.")
+ '()
+ #t
+ 0
+ (cons 0 99999)
+ 'rare))
+
+(define (load-hard-up-limit builder)
+ (builder
+ "LOAD"
+ "HARDUPLIMIT"
+ (_ "What is the maximum upstream bandwidth (hard limit)?")
+ (_ "The limit is given as a percentage of the MAXNETUPBPS limit. Use 100 to have MAXNETUPBPS be the hard limit. Use zero for no limit.")
+ '()
+ #t
+ 0
+ (cons 0 999999999)
+ 'rare))
+
+
+(define (load-priority builder)
+ (builder
+ "LOAD"
+ "PRIORITY"
+ (_ "What priority should gnunetd use to run?")
+ (_ "You can specify priorities like NORMAL, ABOVE NORMAL, BELOW NORMAL, HIGH and IDLE or a numerical integer value (man nice). The default is IDLE, which should result in gnunetd only using resources that would otherwise be idle.")
+ '()
+ #t
+ "IDLE"
+ '()
+ 'always))
+
+
+(define (load-padding builder)
+ (builder
+ "GNUNETD-EXPERIMENTAL"
+ "PADDING"
+ (_ "Should we disable random padding (experimental option)?")
+ (nohelp)
+ '()
+ #t
+ #f
+ #f
+ 'experimental))
+
+(define (load-basiclimiting builder)
+ (builder
+ "LOAD"
+ "BASICLIMITING"
+ (_ "Use basic bandwidth limitation? (YES/NO). If in doubt, say YES.")
+ (_
+"Basic bandwidth limitation (YES) means simply that the bandwidth limits specified apply to GNUnet and only to GNUnet. If set to YES, you simply specify the maximum bandwidth (upstream and downstream) that GNUnet is allowed to use and GNUnet will stick to those limitations. This is useful if your overall bandwidth is so large that the limit is mostly used to ensure that enough capacity is left for other applications. Even if you want to dedicate your entire connection to GNUnet you should not set the limits to values higher than what you have since GNUnet uses those limits to determine for example the number of connections to establish (and it would be inefficient if that computation yields a number that is far too high).
+
+While basic bandwidth limitation is simple and always works, there are some situations where it is not perfect. Suppose you are running another application which performs a larger download. During that particular time, it would be nice if GNUnet would throttle its bandwidth consumption (automatically) and resume using more bandwidth after the download is complete. This is obviously advanced magic since GNUnet will have to monitor the behavior of other applications. Another scenario is a monthly cap on bandwidth imposed by your ISP, which you would want to ensure is obeyed. Here, you may want GNUnet to monitor the traffic from other applications to ensure that the combined long-term traffic is within the pre-set bounds. Note that you should probably not set the bounds tightly since GNUnet may observe that the bounds are about to be broken but would be unable to stop other applications from continuing to use bandwidth.
+
+If either of these two scenarios applies, set BASICLIMITING to NO. Then set the bandwidth limits to the COMBINED amount of traffic that is acceptable for both GNUnet and other applications. GNUnet will then immediately throttle bandwidth consumption if the short-term average is above the limit, and it will also try to ensure that the long-term average is below the limit. Note however that using NO can have the effect of GNUnet (almost) ceasing operations after other applications perform high-volume downloads that are beyond the defined limits. GNUnet would reduce consumption until the long-term limits are again within bounds.
+
+NO only works on platforms where GNUnet can monitor the amount of traffic that the local host puts out on the network. This is only implemented for Linux and Win32. In order for the code to work, GNUnet needs to know the specific network interface that is used for the external connection (after all, the amount of traffic on loopback or on the LAN should never be counted since it is irrelevant).")
+ '()
+ #t
+ #t
+ #f
+ 'advanced))
+
+(define (load-interfaces builder)
+ (builder
+ "LOAD"
+ "INTERFACES"
+ (_ "Network interface to monitor")
+ (_ "For which interfaces should we do accounting? GNUnet will evaluate the total traffic (not only the GNUnet related traffic) and adjust its bandwidth usage accordingly. You can currently only specify a single interface. GNUnet will also use this interface to determine the IP to use. Typical values are eth0, ppp0, eth1, wlan0, etc. 'ifconfig' will tell you what you have. Never use 'lo', that just won't work. Under Windows, specify the index number reported by 'gnunet-win-tool -n'.")
+ '()
+ #t
+ "eth0"
+ (list "*" "eth0" "eth1" "eth2")
+ 'nobasiclimit))
+
+(define (load builder)
+ (builder
+ ""
+ ""
+ (_ "Load management")
+ (nohelp)
+ (list
+ (load-priority builder)
+ (load-maxdown builder)
+ (load-maxup builder)
+ (load-hard-up-limit builder)
+ (load-cpu builder)
+ (load-io builder)
+ (load-cpu-hard builder)
+ (load-basiclimiting builder)
+ (load-interfaces builder)
+ (load-padding builder)
+ )
+ #t
+ #f
+ #f
+ 'always) )
+
+
+;; main-menu
+
+(define (main builder)
+ (builder
+ "Root"
+ ""
+ (_ "Root node")
+ (nohelp)
+ (list
+ (meta builder)
+ (fundamentals builder)
+ (general builder)
+ (advertising builder)
+ (logging builder)
+ (load builder)
+ (transports builder)
+ (applications builder)
+ )
+ #t
+ #f
+ #f
+ 'always) )
+
+
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+
+;; first main method: build tree using build-tree-node
+;; The lambda expression is used to throw away the last argument,
+;; which we use internally and which is not used by build-tree-node!
+(define (gnunet-config-setup)
+ (main
+ (lambda (a b c d e f g h i) (build-tree-node a b c d e f g h) ) ) )
+
+
+;; second main method: update visibility (and values)
+;; "change" uses again the tree builder but this time
+;; scans the "i" tags to determine how the visibility needs to change
+
+(define (gnunet-config-change ctx)
+ (let
+ (
+ (advanced (get-option ctx "Meta" "ADVANCED"))
+ (rare (get-option ctx "Meta" "RARE"))
+ (nobasiclimit (not (get-option ctx "LOAD" "BASICLIMITING")))
+ (experimental (get-option ctx "Meta" "EXPERIMENTAL"))
+ (ipv6 (not (get-option ctx "GNUNETD" "DISABLE-IPV6")))
+ (f2fr (not (get-option ctx "F2F" "RESTRICT") ) )
+ (f2f (or (get-option ctx "F2F" "FRIENDS-ONLY")
+ (not (eq? (get-option ctx "F2F" "MINIMUM") 0) ) ) )
+ (tcp-port-nz (eq? (get-option ctx "TCP" "PORT") 0) )
+ (udp-port-nz (eq? (get-option ctx "UDP" "PORT") 0) )
+ (http-port-nz (eq? (get-option ctx "HTTP" "PORT") 0) )
+ (mysql (string= (get-option ctx "MODULES" "sqstore") "sqstore_mysql") )
+ (fs-loaded (list? (member "fs" (string-split (get-option ctx "GNUNETD" "APPLICATIONS") #\ ) ) ) )
+ (hostlist-loaded (list? (member "hostlist" (string-split (get-option ctx "GNUNETD" "APPLICATIONS") #\ ) ) ) )
+ (nat-loaded (list? (member "nat" (string-split (get-option ctx "GNUNETD" "TRANSPORTS") #\ ) ) ) )
+ (tcp-loaded (list? (member "tcp" (string-split (get-option ctx "GNUNETD" "TRANSPORTS") #\ ) ) ) )
+ (udp-loaded (list? (member "udp" (string-split (get-option ctx "GNUNETD" "TRANSPORTS") #\ ) ) ) )
+ (http-loaded (list? (member "http" (string-split (get-option ctx "GNUNETD" "TRANSPORTS") #\ ) ) ) )
+ (smtp-loaded (list? (member "smtp" (string-split (get-option ctx "GNUNETD" "TRANSPORTS") #\ ) ) ) )
+ )
+ (begin
+ (main
+ (lambda (a b c d e f g h i)
+ (begin
+ (cond
+ ((eq? i 'advanced) (change-visible ctx a b advanced))
+ ((eq? i 'rare) (change-visible ctx a b (and advanced rare)))
+ ((eq? i 'experimental) (change-visible ctx a b (and advanced experimental)))
+ ((eq? i 'f2f) (change-visible ctx a b f2f))
+ ((eq? i 'ipv6) (change-visible ctx a b ipv6))
+ ((eq? i 'f2fr) (change-visible ctx a b f2fr))
+ ((eq? i 'mysql) (change-visible ctx a b mysql))
+ ((eq? i 'fs-loaded) (change-visible ctx a b fs-loaded))
+ ((eq? i 'hostlist-loaded) (change-visible ctx a b hostlist-loaded))
+ ((eq? i 'nat-unlimited)(change-visible ctx a b nat-unlimited))
+ ((eq? i 'tcp-port-nz) (change-visible ctx a b tcp-port-nz))
+ ((eq? i 'udp-port-nz) (change-visible ctx a b udp-port-nz))
+ ((eq? i 'nat-loaded) (change-visible ctx a b nat-loaded))
+ ((eq? i 'udp-loaded) (change-visible ctx a b udp-loaded))
+ ((eq? i 'tcp-loaded) (change-visible ctx a b tcp-loaded))
+ ((eq? i 'http-loaded) (change-visible ctx a b http-loaded))
+ ((eq? i 'smtp-loaded) (change-visible ctx a b smtp-loaded))
+ ((eq? i 'nobasiclimit) (change-visible ctx a b nobasiclimit))
+ (else 'nothing)
+ )
+ ) ) )
+ (change-visible ctx "NETWORK" "PORT" (and advanced (not (get-option ctx "TCPSERVER" "DISABLE"))))
+ (change-visible ctx "NETWORK" "TRUSTED" (and advanced (not (get-option ctx "TCPSERVER" "DISABLE"))))
+ )
+) )
+
diff --git a/contrib/coverage.sh b/contrib/coverage.sh
new file mode 100755
index 000000000..72314ae67
--- /dev/null
+++ b/contrib/coverage.sh
@@ -0,0 +1,13 @@
+#!/bin/sh
+# make sure configure was run with coverage enabled...
+lcov --directory . --zerocounters
+make check
+for n in `find * -name "*.gc??" | grep libs`
+do
+ cd `dirname $n`
+ mv `basename $n` ..
+ cd -
+done
+lcov --directory . --capture --output-file app.info
+mkdir -p doc/coverage
+genhtml -o doc/coverage app.info
diff --git a/contrib/defaults.conf b/contrib/defaults.conf
new file mode 100644
index 000000000..d6100b77d
--- /dev/null
+++ b/contrib/defaults.conf
@@ -0,0 +1,139 @@
+[PATHS]
+SERVICEHOME = /var/lib/gnunet/
+DEFAULTCONFIG = /etc/gnunetd.conf
+
+[gnunetd]
+HOSTKEY = $SERVICEHOME/.hostkey
+
+[TESTING]
+WEAKRANDOM = NO
+
+
+[tcp]
+PORT = 2086
+TIMEOUT = 300000
+ALLOW_SHUTDOWN = NO
+# MAXBUF =
+# DISABLEV6 =
+# BINDTO =
+# ACCEPT_FROM =
+# ACCEPT_FROM6 =
+# REJECT_FROM =
+# REJECT_FROM6 =
+
+
+[arm]
+PORT = 2087
+HOSTNAME = localhost
+HOME = $SERVICEHOME
+CONFIG = $DEFAULTCONFIG
+BINARY = gnunet-service-arm
+ACCEPT_FROM = 127.0.0.1;
+ACCEPT_FROM6 = ::1;
+ALLOW_SHUTDOWN = YES
+# GLOBAL_PREFIX =
+# USERNAME =
+# MAXBUF =
+# TIMEOUT =
+# DISABLEV6 =
+# BINDTO =
+# REJECT_FROM =
+# REJECT_FROM6 =
+# PREFIX =
+
+[statistics]
+PORT = 2088
+HOSTNAME = localhost
+HOME = $SERVICEHOME
+CONFIG = $DEFAULTCONFIG
+BINARY = gnunet-service-statistics
+ACCEPT_FROM = 127.0.0.1;
+ACCEPT_FROM6 = ::1;
+ALLOW_SHUTDOWN = YES
+# USERNAME =
+# MAXBUF =
+# TIMEOUT =
+# DISABLEV6 =
+# BINDTO =
+# REJECT_FROM =
+# REJECT_FROM6 =
+# PREFIX =
+
+[resolver]
+PORT = 2089
+HOSTNAME = localhost
+HOME = $SERVICEHOME
+CONFIG = $DEFAULTCONFIG
+BINARY = gnunet-service-resolver
+ACCEPT_FROM = 127.0.0.1;
+ACCEPT_FROM6 = ::1;
+ALLOW_SHUTDOWN = YES
+# USERNAME =
+# MAXBUF =
+# TIMEOUT =
+# DISABLEV6 =
+# BINDTO =
+# REJECT_FROM =
+# REJECT_FROM6 =
+# PREFIX =
+
+[peerinfo]
+PORT = 2090
+HOSTNAME = localhost
+HOME = $SERVICEHOME
+CONFIG = $DEFAULTCONFIG
+BINARY = gnunet-service-peerinfo
+ACCEPT_FROM = 127.0.0.1;
+ACCEPT_FROM6 = ::1;
+ALLOW_SHUTDOWN = YES
+# USERNAME =
+# MAXBUF =
+# TIMEOUT =
+# DISABLEV6 =
+# BINDTO =
+# REJECT_FROM =
+# REJECT_FROM6 =
+# PREFIX =
+HOSTS = $SERVICEHOME/data/hosts/
+TRUST = $SERVICEHOME/data/credit/
+
+
+[transport]
+PORT = 2091
+HOSTNAME = localhost
+HOME = $SERVICEHOME
+CONFIG = $DEFAULTCONFIG
+BINARY = gnunet-service-transport
+DEFAULT_QUOTA_IN = 50000
+DEFAULT_QUOTA_OUT = 50000
+NEIGHBOUR_LIMIT = 50
+ACCEPT_FROM = 127.0.0.1;
+ACCEPT_FROM6 = ::1;
+ALLOW_SHUTDOWN = YES
+# USERNAME =
+# MAXBUF =
+# TIMEOUT =
+# DISABLEV6 =
+# BINDTO =
+# REJECT_FROM =
+# REJECT_FROM6 =
+# PREFIX =
+
+
+[core]
+PORT = 2092
+HOSTNAME = localhost
+HOME = $SERVICEHOME
+CONFIG = $DEFAULTCONFIG
+BINARY = gnunet-service-core
+ACCEPT_FROM = 127.0.0.1;
+ACCEPT_FROM6 = ::1;
+ALLOW_SHUTDOWN = YES
+# USERNAME =
+# MAXBUF =
+# TIMEOUT =
+# DISABLEV6 =
+# BINDTO =
+# REJECT_FROM =
+# REJECT_FROM6 =
+# PREFIX =
diff --git a/contrib/gnunet-logo-big.png b/contrib/gnunet-logo-big.png
new file mode 100644
index 000000000..54c418f8f
--- /dev/null
+++ b/contrib/gnunet-logo-big.png
Binary files differ
diff --git a/contrib/gnunet-logo-color.png b/contrib/gnunet-logo-color.png
new file mode 100644
index 000000000..326822ebd
--- /dev/null
+++ b/contrib/gnunet-logo-color.png
Binary files differ
diff --git a/contrib/hostlist.cgi b/contrib/hostlist.cgi
new file mode 100644
index 000000000..f04246e47
--- /dev/null
+++ b/contrib/hostlist.cgi
@@ -0,0 +1,5 @@
+#!/bin/sh
+# This is a CGI script to generate the host list on-demand.
+# by Michael Wensley, with minor improvements by Christian Grothoff
+echo -ne "Content-Type: application/octet-stream\r\n\r\n"
+cat /var/lib/gnunet/data/hosts/*.{2,3,4,5,6,8,12,17,23,25}
diff --git a/contrib/hostlist.php b/contrib/hostlist.php
new file mode 100644
index 000000000..158561542
--- /dev/null
+++ b/contrib/hostlist.php
@@ -0,0 +1,35 @@
+<?php
+// Requires PHP >= 4.3.0
+// Author: "Krasko Oleksandr" <0m3r.mail@gmail.com>
+// Minor improvements by Christian Grothoff <christian@grothoff.org>
+header("Content-Type: application/octet-stream\r\n\r\n");
+$extmas = array();
+$pv=$_GET['p'];
+if (isset($pv))
+ {
+ for ($ii=0;$ii<64;$ii++)
+ if (0 != ($pv & (1 << $ii)))
+ $extmas[] = $ii;
+ }
+else
+ {
+ $extmas = array('2','3','4','5','6','8','12','17','23','25');
+ }
+$path = '/var/lib/gnunet/data/hosts/'; // adjust as necessary
+$dir = opendir($path);
+if (! $dir)
+ die("Cannot open directory $path.\n");
+$mas = array();
+while ($fname = readdir($dir)) {
+ $fn = $path . '/' . $fname;
+ if (is_file($fn)) {
+ $dpo = strpos($fname, '.') + 1;
+ $len = strlen($fname);
+ if (in_array(substr($fname, $dpo - $len), $extmas))
+ $mas[] = $fn;
+ }
+}
+shuffle($mas); // randomize order
+foreach ($mas as $val)
+ echo file_get_contents($val);
+?>
diff --git a/contrib/report.sh b/contrib/report.sh
new file mode 100755
index 000000000..76abe5a7c
--- /dev/null
+++ b/contrib/report.sh
@@ -0,0 +1,200 @@
+#!/bin/sh
+
+TEST=`type type|grep not`
+if test -n "$TEST"; then
+ WHICH=which
+else
+ WHICH=type
+fi
+
+echo "On some systems, you may need to change /bin/sh to point to bash"
+echo
+echo "Please submit the following information with your bug report: "
+echo "--------------------------------------------------------------"
+OS=`uname -s 2>/dev/null`
+echo "OS : $OS"
+REL=`uname -r 2>/dev/null`
+echo "OS RELEASE : $REL"
+HW=`uname -m 2>/dev/null`
+echo "HARDWARE : $HW"
+
+TEST=`$WHICH gcc 2>/dev/null`
+if test -n "$TEST"; then
+ VERS=`gcc --version 2>/dev/null | head -n 1`
+ echo "gcc : $VERS"
+else
+ echo "gcc : Not Found";
+fi
+
+TEST=`$WHICH gmake 2>/dev/null`
+if test -n "$TEST" ; then
+ gmake --version 2>/dev/null |\
+ awk -F, '{print $1}' |\
+ awk '/GNU Make/{print "GNU gmake :",$NF}'
+else
+ TEST=`make --version 2>/dev/null`
+ if test -n "$TEST"; then
+ make --version 2>/dev/null |\
+ awk -F, '{print $1}' |\
+ awk '/GNU Make/{print "make :",$NF}'
+ else
+ echo "make : Not Found"
+ fi
+fi
+
+TEST=`$WHICH autoconf 2>/dev/null`
+if test -n "$TEST"; then
+ autoconf --version |\
+ head -n 1 |\
+ awk '{\
+ if (length($4) == 0) {\
+ print "autoconf : "$3\
+ } else {\
+ print "autoconf : "$4\
+ }}'
+else
+ echo "autoconf : Not Found"
+fi
+
+TEST=`$WHICH automake 2>/dev/null`
+if test -n "$TEST"; then
+ automake --version 2>/dev/null |\
+ head -n 1 |\
+ awk '{print "automake : "$4}'
+else
+ echo "automake : Not Found"
+fi
+
+TEST=`$WHICH libtool 2>/dev/null`
+if test -n "$TEST"; then
+ libtool --version 2>/dev/null |\
+ head -n 1 |\
+ awk '{print "libtool : "$4}'
+else
+ echo "libtool : Not Found"
+fi
+
+TEST=`$WHICH extract 2>/dev/null`
+if test -n "$TEST"; then
+ extract -v 2>/dev/null |\
+ head -n 1 |\
+ awk '{print "libextractor : "$2}'
+else
+ echo "libextractor : Not Found"
+fi
+
+TEST=`$WHICH gnunetd 2>/dev/null`
+if test -n "$TEST"; then
+ gnunetd -v | sed -e "s/v//" 2>/dev/null |\
+ awk '{print "GNUnet : "$2}'
+else
+ echo "GNUnet : Not Found"
+fi
+
+TEST=`$WHICH libgcrypt-config 2> /dev/null`
+if test -n "$TEST"; then
+ libgcrypt-config --version 2> /dev/null | \
+ awk '{print "libgcrypt : "$1}'
+else
+ echo "libgcrypt : Not Found"
+fi
+
+TEST=`$WHICH mysql_config 2> /dev/null`
+if test -n "$TEST"; then
+ mysql_config --version 2> /dev/null | \
+ awk '{print "mysql : "$1}'
+else
+ echo "mysql : Not Found"
+fi
+
+TEST=`$WHICH pkg-config 2> /dev/null`
+if test -n "$TEST"; then
+ pkg-config --version 2> /dev/null | \
+ awk '{print "pkg-config : "$1}'
+else
+ echo "pkg-config : Not Found"
+fi
+
+TEST=`$WHICH pkg-config 2> /dev/null`
+if test -n "$TEST"; then
+ pkg-config --modversion glib-2.0 2> /dev/null | \
+ awk '{print "glib2 : "$1}'
+else
+ echo "glib2 : Not Found"
+fi
+
+TEST=`$WHICH pkg-config 2> /dev/null`
+if test -n "$TEST"; then
+ pkg-config --modversion gtk+-2.0 2> /dev/null | \
+ awk '{print "gtk2+ : "$1}'
+else
+ echo "gtk2+ : Not Found"
+fi
+
+TEST=`$WHICH dpkg 2> /dev/null`
+if test -n "$TEST"; then
+ LINES=`dpkg -s libgmp3-dev | grep Version | wc -l`
+ if test "$LINES" = "1"
+ then
+ VERSION=`dpkg -s libgmp3-dev | grep Version | awk '{print $2}'`
+ echo "GMP : libgmp3-dev-$VERSION.deb"
+ else
+ echo "GMP : dpkg: libgmp3-dev not installed"
+ fi
+else
+ TEST=`$WHICH rpm 2> /dev/null`
+ if test -n "$TEST"; then
+ rpm -q gmp | sed -e "s/gmp-//" 2> /dev/null | \
+ awk '{print "GMP : "$1.rpm}'
+ else
+ echo "GMP : Test not available"
+ fi
+fi
+
+TEST=`$WHICH gettext 2> /dev/null`
+if test -n "$TEST"; then
+ gettext --version | head -n1 2> /dev/null | \
+ awk '{print "GNU gettext : "$4}'
+else
+ echo "GNU gettext : Not found"
+fi
+
+
+TEST=`$WHICH guile 2> /dev/null`
+if test -n "$TEST"; then
+ guile --version | head -n1 2> /dev/null | \
+ awk '{print "Guile : "$2}'
+else
+ echo "Guile : Not found"
+fi
+
+
+TEST=`$WHICH curl-config 2> /dev/null`
+if test -n "$TEST"; then
+ curl-config --version | head -n1 2> /dev/null | \
+ awk '{print "libcurl : "$2}'
+else
+ echo "libcurl : Not found"
+fi
+
+
+TEST=`grep "Id:" /usr/include/adns.h 2> /dev/null`
+if test -n "$TEST"; then
+ echo "$TEST" | awk '{print "GNU adns : "$4}'
+else
+ echo "GNU adns : Not found"
+fi
+
+TEST=`which qmake 2> /dev/null`
+if test -x "$TEST"; then
+ qmake --version | tail -n 1 | awk '{print "Qt : "$4}'
+else
+ echo "Qt : Not found"
+fi
+
+
+
+
+
+
+echo "--------------------------------------------------------------"
diff --git a/doc/man/Makefile.am b/doc/man/Makefile.am
new file mode 100644
index 000000000..734fc9c85
--- /dev/null
+++ b/doc/man/Makefile.am
@@ -0,0 +1,7 @@
+man_MANS = \
+ gnunet-arm.1 \
+ gnunet-peerinfo.1 \
+ gnunet-statistics.1 \
+ gnunet-transport.c
+
+EXTRA_DIST = ${man_MANS}
diff --git a/doc/man/gnunet-arm.1 b/doc/man/gnunet-arm.1
new file mode 100644
index 000000000..e440479c3
--- /dev/null
+++ b/doc/man/gnunet-arm.1
@@ -0,0 +1,57 @@
+.TH GNUNET\-ARM 1 "Mar 7, 2009" "GNUnet"
+
+.SH NAME
+gnunet\-arm \- control GNUnet services
+
+.SH SYNOPSIS
+.B gnunet-arm
+.RI [ options ]
+.br
+
+.SH DESCRIPTION
+\fBgnunet\-arm\fP can be used to start or stop GNUnet services, including the ARM service itself.
+
+.SH OPTIONS
+
+.TP
+.IP "\-c FILENAME, \-\-config=FILENAME"
+Use the configuration file FILENAME.
+
+.TP
+.IP "\-e, \-\-end"
+Shutdown all GNUnet services (including ARM).
+
+.TP
+.IP "\-h, \-\-help"
+Print short help on options.
+
+.TP
+.IP "\-L LOGLEVEL, \-\-loglevel=LOGLEVEL"
+Use LOGLEVEL for logging. Valid values are DEBUG, INFO, WARNING and ERROR.
+
+.TP
+.IP "\-i SERVICE, \-\-init=SERVICE"
+Starts the specified SERVICE if it is not already running.
+
+.TP
+.IP "\-k SERVICE, \-\-kill=SERVICE"
+Stop the specified SERVICE if it is running.
+
+.TP
+.IP "\-s, \-\-start"
+Start all GNUnet default services on this system (including ARM).
+
+.TP
+.IP "\-t SERVICE, \-\-test=SERVICE"
+Report if the specified SERVICE is running.
+
+.TP
+.IP "\-v, \-\-version"
+Print GNUnet version number.
+
+
+.SH BUGS
+Report bugs by using Mantis <https://gnunet.org/mantis/> or by sending electronic mail to <gnunet\-developers@gnu.org>
+
+.SH SEE ALSO
+gnunet\-service\-arm(1)
diff --git a/doc/man/gnunet-peerinfo.1 b/doc/man/gnunet-peerinfo.1
new file mode 100644
index 000000000..2980d3544
--- /dev/null
+++ b/doc/man/gnunet-peerinfo.1
@@ -0,0 +1,42 @@
+.TH GNUNET-PEERINFO 1 "Mar 15, 2009" "GNUnet"
+
+.SH NAME
+gnunet\-peerinfo \- Display information about other peers.
+
+.SH SYNOPSIS
+.B gnunet\-peerinfo
+.RI [ options ]
+.br
+
+.SH DESCRIPTION
+.PP
+\fBgnunet\-peerinfo\fP display the known addresses and trust of known peers.
+
+.SH OPTIONS
+.B
+.IP "\-c FILENAME, \-\-config=FILENAME"
+Load config file (default: /etc/gnunet.conf)
+.B
+.IP "\-h, \-\-help"
+Print help page
+.B
+.IP "\-n, \-\-numeric"
+Disable resolution of IPs to hostnames
+.B
+.IP "\-q, \-\-quiet"
+Do not print anything but the peer identities
+.B
+.IP "\-s, \-\-self"
+Print only our own identity (together with "\-q", this is the exact line that other peers would have to put in to their friends file in order to consider this peer one of their friends in F2F mode).
+.B
+.IP "\-v, \-\-version"
+Print the version number
+.B
+.IP "\-L LOGLEVEL, \-\-loglelvel=LOGLEVEL"
+Set the loglevel
+
+.SH BUGS
+Report bugs by using mantis <https://gnunet.org/mantis/> or by sending electronic mail to <gnunet\-developers@gnu.org>
+
+.SH SEE ALSO
+gnunet.conf(5)
diff --git a/doc/man/gnunet-statistics.1 b/doc/man/gnunet-statistics.1
new file mode 100644
index 000000000..8a23e01e0
--- /dev/null
+++ b/doc/man/gnunet-statistics.1
@@ -0,0 +1,50 @@
+.TH GNUNET\-STATISTICS 1 "Mar 6, 2009" "GNUnet"
+
+.SH NAME
+gnunet\-statistics \- Display statistics about your GNUnet system
+
+.SH SYNOPSIS
+.B gnunet-statistics
+.RI [ options ] [ VALUE ]
+.br
+
+.SH DESCRIPTION
+\fBgnunet\-statistics\fP is used to display detailed information about various aspect of GNUnet's operation. This tool only works if the "statistics" service is available.
+gnunet\-statistics can be used to set a value by giving the options \-n, \-s and also a VALUE.
+
+.SH OPTIONS
+
+.TP
+.IP "\-c FILENAME, \-\-config=FILENAME"
+Use the configuration file FILENAME.
+
+.TP
+.IP "\-h, \-\-help"
+Print short help on options.
+
+.TP
+.IP "\-L LOGLEVEL, \-\-loglevel=LOGLEVEL"
+Use LOGLEVEL for logging. Valid values are DEBUG, INFO, WARNING and ERROR.
+
+.TP
+.IP "\-n NAME, \-\-name=NAME"
+Each statistic has a name that is unique with in its subsystem. With this option, the output can be restricted to statistics that have a particular name.
+
+.TP
+.IP "\-p, \-\-persistent"
+When setting a value, make the value persistent. If the value used to be persistent and this flag is not given, it will be marked as non\-persistent.
+
+.TP
+.IP "\-s SUBSYSTEM, \-\-subsystem=SUBSYSTEM"
+Statistics are kept for various subsystems. With this option, the output can be restricted to a particular subsystem only.
+
+.TP
+.IP "\-v, \-\-version"
+Print GNUnet version number.
+
+
+.SH BUGS
+Report bugs by using Mantis <https://gnunet.org/mantis/> or by sending electronic mail to <gnunet\-developers@gnu.org>
+
+.SH SEE ALSO
+gnunet\-service\-statistics(1)
diff --git a/doc/man/gnunet-transport.1 b/doc/man/gnunet-transport.1
new file mode 100644
index 000000000..643759395
--- /dev/null
+++ b/doc/man/gnunet-transport.1
@@ -0,0 +1,96 @@
+.TH GNUNET-TRANSPORT "1" "23 Dec 2006" "GNUnet"
+.SH NAME
+gnunet\-transport \- a tool to test a GNUnet transport service
+.SH SYNOPSIS
+.B gnunet\-transport\
+[\fIOPTIONS\fR]
+.SH DESCRIPTION
+.PP
+gnunet\-transport can be used to test or profile
+a GNUnet transport service. The tool can be used to test
+both the correctness of the software as well as the correctness
+of the configuration. gnunet\-transport features two modes,
+called loopback mode and ping mode. In loopback mode the test is limited to testing if the
+transport can be used to communicate with itself (loopback).
+This mode does not include communication with other peers which
+may be blocked by firewalls and other general Internet connectivity
+problems. The loopback mode is particularly useful to test
+the SMTP transport service since this service is fairly hard to
+configure correctly and most problems can be reveiled by just
+testing the loopback. In ping mode the tool will attempt to download
+peer advertisements from the URL specified in the configuration file
+and then try to contact each of the peers. Note that it is perfectly
+normal that some peers do not respond, but if no peer responds something
+is likely to be wrong. The configuration is always taken
+from the configuration file. Do not run gnunetd while running
+gnunet\-transport since the transport services cannot
+be used by two processes at the same time.
+.PP
+gnunet\-transport will always produce an error\-message for
+the NAT transport in loopback mode. If NAT is configured in accept\-mode (as in,
+accept connections from peers using network address translation),
+the check will fail with the message "could not create HELO",
+which is correct since the peer itself is clearly not going to
+advertise itself as a NAT. If the peer is configured in NAT\-mode,
+that is, the peer is behind a NAT box, the message will be
+'could not connect'. For NAT, both messages are NOT errors
+but exactly what is supposed to happen.
+.PP
+Similarly, a NAT\-ed peer should typically configure the TCP transport
+to use port 0 (not listen on any port). In this case,
+gnunet\-transport will print 'could not create HELO' for the
+TCP transport. This is also ok. In fact, a correctly configured
+peer using NAT should give just two errors (could not connect for
+tcp and could not create HELO for NAT) when tested using
+gnunet\-transport\. The reason is, that gnunet\-transport\
+only tests loopback connectivity, and for a NAT\-ed peer, that just
+does not apply.
+.PP
+Note that in ping mode the HTTP download times out after 5 minutes,
+so if the list of peers is very large and not all peers can be
+queried within the 5 minutes the tool may abort before trying all
+peers.
+.TP
+\fB\-c \fIFILENAME\fR, \fB\-\-config=\fIFILENAME\fR
+use config file (default: /etc/gnunetd.conf)
+.TP
+\fB\-h\fR, \fB\-\-help\fR
+print help page
+.TP
+\fB\-L \fILOGLEVEL\fR, \fB\-\-loglevel=\fILOGLEVEL\fR
+change the loglevel. Possible values for \fILOGLEVEL\fR are NOTHING, FATAL, ERROR, FAILURE, WARNING, MESSAGE, INFO, DEBUG, CRON and EVERYTHING.
+.TP
+\fB\-p\fR, \fB\-\-ping\fR
+use ping mode (loopback mode is default)
+.TP
+\fB\-r\fI COUNT \fB\-\-repeat=\fICOUNT\fR
+send COUNT messages in a sequence over the same connection
+.TP
+\fB\-s\fI SIZE \fB\-\-size=\fISIZE\fR
+test using the specified message size, default is 11
+.TP
+\fB\-t\fI TRANSPORT\fR, \fB\-\-transport=\fITRANSPORT\fR
+run using the specified transport, if not given the transports
+configured in the configuration file are used.
+.TP
+\fB\-u \fIUSER\fR, \fB\-\-user=USER\fR
+run as user USER (and if available as group USER). Note that to use this option, you will probably have to start gnunet-transport as
+root. It is typically better to directly start gnunet-transport as that user instead.
+.TP
+\fB\-v\fR, \fB\-\-version\fR
+print the version number
+.TP
+\fB\-V\fR, \fB\-\-verbose\fR
+be verbose
+.SH NOTES
+gnunet\-transport can run for a long time, depending on
+how high you have set the \fICOUNT\fR level. Run first with small numbers
+for \fICOUNT\fR to get an initial estimate on the runtime.
+.SH FILES
+.TP
+/etc/gnunetd.conf
+default gnunetd configuration file
+.SH "REPORTING BUGS"
+Report bugs by using mantis <https://gnunet.org/mantis/> or by sending electronic mail to <gnunet-developers@gnu.org>
+.SH "SEE ALSO"
+\fBgnunetd.conf\fP(5), \fBgnunetd\fP(1)
diff --git a/m4/Makefile.am b/m4/Makefile.am
new file mode 100644
index 000000000..128870999
--- /dev/null
+++ b/m4/Makefile.am
@@ -0,0 +1 @@
+EXTRA_DIST = .
diff --git a/m4/align.m4 b/m4/align.m4
new file mode 100644
index 000000000..256300e37
--- /dev/null
+++ b/m4/align.m4
@@ -0,0 +1,28 @@
+# align.m4
+dnl Copyright (C) 2008 Christian Grothoff
+dnl This file is free software, distributed under the terms of the GNU
+dnl General Public License. As a special exception to the GNU General
+dnl Public License, this file may be distributed as part of a program
+dnl that contains a configuration script generated by Autoconf, under
+dnl the same distribution terms as the rest of that program.
+
+# Define HAVE_UNALIGNED_64_ACCESS if reading a 64-bit value at a 32-bit aligned offset works
+# Note that the program intentionally causes a SIGBUS (so you may
+# see some message along those lines on the console).
+AC_DEFUN([AC_UNALIGNED_64_ACCESS],
+[AC_CACHE_CHECK([whether unaligned 64-bit access works],
+ ac_cv_unaligned_64_access,
+ [
+ AC_RUN_IFELSE(AC_LANG_PROGRAM([[struct S { int a,b,c;};]],
+ [[struct S s = {0,0,0}; long long * p = &s.b;
+ long long x = *p; return (int) x*x;]]),
+ ac_cv_unaligned_64_access=yes,
+ ac_cv_unaligned_64_access=no,
+ ac_cv_unaligned_64_access=no)
+ ])
+ case "$ac_cv_unaligned_64_access" in
+ *yes) value=1;;
+ *) value=0;;
+ esac
+ AC_DEFINE_UNQUOTED([HAVE_UNALIGNED_64_ACCESS], $value, [We can access-64 bit values that are only 32-bit aligned])
+])
diff --git a/po/ChangeLog b/po/ChangeLog
new file mode 100644
index 000000000..7ff113c61
--- /dev/null
+++ b/po/ChangeLog
@@ -0,0 +1,16 @@
+2007-02-08 gettextize <bug-gnu-gettext@gnu.org>
+
+ * Makefile.in.in: Upgrade to gettext-0.16.1.
+ * Rules-quot: Upgrade to gettext-0.16.1.
+
+2004-08-21 gettextize <bug-gnu-gettext@gnu.org>
+
+ * Makefile.in.in: New file, from gettext-0.14.
+ * boldquot.sed: New file, from gettext-0.14.
+ * en@boldquot.header: New file, from gettext-0.14.
+ * en@quot.header: New file, from gettext-0.14.
+ * insert-header.sin: New file, from gettext-0.14.
+ * quot.sed: New file, from gettext-0.14.
+ * remove-potcdate.sin: New file, from gettext-0.14.
+ * Rules-quot: New file, from gettext-0.14.
+
diff --git a/po/GNUnet.pot b/po/GNUnet.pot
new file mode 100644
index 000000000..47bf3dfae
--- /dev/null
+++ b/po/GNUnet.pot
@@ -0,0 +1,5168 @@
+# SOME DESCRIPTIVE TITLE.
+# Copyright (C) YEAR Christian Grothoff
+# This file is distributed under the same license as the PACKAGE package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: gnunet-developers@mail.gnu.org\n"
+"POT-Creation-Date: 2009-01-08 10:55-0700\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
+"Language-Team: LANGUAGE <LL@li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=CHARSET\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: src/setup/ncurses/wizard_curs.c:72 src/setup/lib/wizard_util.c:155
+#: src/setup/lib/wizard_util.c:210
+msgid "Error"
+msgstr ""
+
+#: src/setup/ncurses/wizard_curs.c:80
+msgid "Help"
+msgstr ""
+
+#: src/setup/ncurses/wizard_curs.c:87
+msgid "Error!"
+msgstr ""
+
+#: src/setup/ncurses/wizard_curs.c:101 src/applications/vpn/cs.c:94
+msgid "No"
+msgstr ""
+
+#: src/setup/ncurses/wizard_curs.c:102 src/applications/vpn/cs.c:94
+msgid "Yes"
+msgstr ""
+
+#: src/setup/ncurses/wizard_curs.c:118 src/setup/ncurses/wizard_curs.c:183
+#: src/setup/ncurses/wizard_curs.c:299 src/setup/ncurses/mconf.c:189
+#: src/setup/ncurses/mconf.c:285 src/setup/ncurses/mconf.c:365
+#: src/setup/ncurses/mconf.c:456
+msgid "Internal error! (Choice invalid?)"
+msgstr ""
+
+#: src/setup/ncurses/wizard_curs.c:150
+msgid "Abort"
+msgstr ""
+
+#: src/setup/ncurses/wizard_curs.c:151
+msgid "Ok"
+msgstr ""
+
+#: src/setup/ncurses/wizard_curs.c:218 src/setup/ncurses/wizard_curs.c:284
+#: src/setup/ncurses/wizard_curs.c:425
+msgid "GNUnet configuration"
+msgstr ""
+
+#: src/setup/ncurses/wizard_curs.c:220
+msgid ""
+"Welcome to GNUnet!\n"
+"\n"
+"This assistant will ask you a few basic questions in order to configure "
+"GNUnet.\n"
+"\n"
+"Please visit our homepage at\n"
+"\thttp://gnunet.org/\n"
+"and join our community at\n"
+"\thttp://gnunet.org/drupal/\n"
+"\n"
+"Have a lot of fun,\n"
+"\n"
+"the GNUnet team"
+msgstr ""
+
+#: src/setup/ncurses/wizard_curs.c:286
+msgid ""
+"Choose the network interface that connects your computer to the internet "
+"from the list below."
+msgstr ""
+
+#: src/setup/ncurses/wizard_curs.c:304 src/setup/ncurses/wizard_curs.c:318
+msgid ""
+"The \"Network interface\" is the device that connects your computer to the "
+"internet. This is usually a modem, an ISDN card or a network card in case "
+"you are using DSL."
+msgstr ""
+
+#: src/setup/ncurses/wizard_curs.c:315
+msgid "Network configuration: interface"
+msgstr ""
+
+#: src/setup/ncurses/wizard_curs.c:317
+msgid ""
+"What is the name of the network interface that connects your computer to the "
+"Internet?"
+msgstr ""
+
+#: src/setup/ncurses/wizard_curs.c:328
+msgid "Network configuration: IP"
+msgstr ""
+
+#: src/setup/ncurses/wizard_curs.c:330
+msgid "What is this computer's public IP address or hostname?"
+msgstr ""
+
+#: src/setup/ncurses/wizard_curs.c:331
+msgid ""
+"If your provider always assigns the same IP-Address to you (a \"static\" IP-"
+"Address), enter it into the \"IP-Address\" field. If your IP-Address changes "
+"every now and then (\"dynamic\" IP-Address) but there's a hostname that "
+"always points to your actual IP-Address (\"Dynamic DNS\"), you can also "
+"enter it here.\n"
+"If left empty, GNUnet will try to automatically detect the IP.\n"
+"You can specify a hostname, GNUnet will then use DNS to resolve it.\n"
+"If in doubt, leave this empty."
+msgstr ""
+
+#: src/setup/ncurses/wizard_curs.c:346
+msgid "Bandwidth configuration: upload"
+msgstr ""
+
+#: src/setup/ncurses/wizard_curs.c:348
+msgid "How much upstream bandwidth (in bytes/s) may be used?"
+msgstr ""
+
+#: src/setup/ncurses/wizard_curs.c:349
+msgid ""
+"You can limit GNUnet's resource usage here.\n"
+"\n"
+"The \"upstream\" is the data channel through which data is *sent* to the "
+"internet. The limit is the maximum amount which GNUnet is allowed to use. If "
+"you have a flatrate, you can set it to the maximum speed of your internet "
+"connection. You should not use a value that is higher than what your actual "
+"connection allows."
+msgstr ""
+
+#: src/setup/ncurses/wizard_curs.c:361
+msgid "Bandwidth configuration: download"
+msgstr ""
+
+#: src/setup/ncurses/wizard_curs.c:363
+msgid "How much downstream bandwidth (in bytes/s) may be used?"
+msgstr ""
+
+#: src/setup/ncurses/wizard_curs.c:364
+msgid ""
+"You can limit GNUnet's resource usage here.\n"
+"\n"
+"The \"downstream\" is the data channel through which data is *received* from "
+"the internet. The limit is the maximum amount which GNUnet is allowed to "
+"use. If you have a flatrate, you can set it to the maximum speed of your "
+"internet connection. You should not use a value that is higher than what "
+"your actual connection allows."
+msgstr ""
+
+#: src/setup/ncurses/wizard_curs.c:376
+msgid "Quota configuration"
+msgstr ""
+
+#: src/setup/ncurses/wizard_curs.c:377
+msgid "What is the maximum size of the datastore in MB?"
+msgstr ""
+
+#: src/setup/ncurses/wizard_curs.c:378
+msgid ""
+"The GNUnet datastore contains all content that GNUnet needs to store "
+"(indexed, inserted and migrated content)."
+msgstr ""
+
+#: src/setup/ncurses/wizard_curs.c:390
+msgid "Daemon configuration: user account"
+msgstr ""
+
+#: src/setup/ncurses/wizard_curs.c:391
+msgid "As which user should gnunetd be run?"
+msgstr ""
+
+#: src/setup/ncurses/wizard_curs.c:393
+msgid ""
+"For security reasons, it is a good idea to let this setup create a new user "
+"account under which the GNUnet service is started at system startup.\n"
+"\n"
+"However, GNUnet may not be able to access files other than its own. This "
+"includes files you want to publish in GNUnet. You'll have to grant read "
+"permissions to the user specified below.\n"
+"\n"
+"Leave the field empty to run GNUnet with system privileges.\n"
+msgstr ""
+
+#: src/setup/ncurses/wizard_curs.c:410
+msgid "Daemon configuration: group account"
+msgstr ""
+
+#: src/setup/ncurses/wizard_curs.c:411
+msgid "As which group should gnunetd be run?"
+msgstr ""
+
+#: src/setup/ncurses/wizard_curs.c:413
+msgid ""
+"For security reasons, it is a good idea to let this setup create a new group "
+"for the chosen user account.\n"
+"\n"
+"You can also specify a already existent group here.\n"
+"\n"
+"Only members of this group will be allowed to start and stop the the GNUnet "
+"server and have access to GNUnet server data.\n"
+msgstr ""
+
+#: src/setup/ncurses/wizard_curs.c:427
+msgid "Do you want to automatically launch GNUnet as a system service?"
+msgstr ""
+
+#: src/setup/ncurses/wizard_curs.c:429
+msgid ""
+"If you say \"yes\" here, the GNUnet background process will be automatically "
+"started when you turn on your computer. If you say \"no\" here, you have to "
+"launch GNUnet yourself each time you want to use it."
+msgstr ""
+
+#: src/setup/ncurses/wizard_curs.c:452 src/setup/gtk/wizard_gtk.c:414
+#, c-format
+msgid "Unable to save configuration file `%s':"
+msgstr ""
+
+#: src/setup/ncurses/wizard_curs.c:472
+msgid "Unable to create user account for daemon."
+msgstr ""
+
+#: src/setup/ncurses/wizard_curs.c:483
+msgid "Unable to setup autostart for daemon."
+msgstr ""
+
+#: src/setup/ncurses/wizard_curs.c:498
+msgid "Save configuration?"
+msgstr ""
+
+#: src/setup/ncurses/wizard_curs.c:499
+msgid "Save configuration now?"
+msgstr ""
+
+#: src/setup/ncurses/wizard_curs.c:539 src/setup/ncurses/mconf.c:500
+msgid "GNUnet Configuration"
+msgstr ""
+
+#: src/setup/ncurses/wizard_curs.c:543
+msgid "Back"
+msgstr ""
+
+#: src/setup/ncurses/mconf.c:96
+msgid "Exit"
+msgstr ""
+
+#: src/setup/ncurses/mconf.c:99
+msgid "Up"
+msgstr ""
+
+#: src/setup/ncurses/mconf.c:102
+msgid "Cancel"
+msgstr ""
+
+#: src/setup/ncurses/mconf.c:221 src/setup/ncurses/mconf.c:408
+msgid "Internal error! (Value invalid?)"
+msgstr ""
+
+#: src/setup/ncurses/mconf.c:398
+msgid "Invalid input, expecting floating point value."
+msgstr ""
+
+#: src/setup/ncurses/mconf.c:439
+msgid "Invalid input, expecting integer."
+msgstr ""
+
+#: src/setup/ncurses/mconf.c:446
+msgid "Value is not in legal range."
+msgstr ""
+
+#: src/setup/ncurses/mconf.c:512 src/setup/text/conf.c:569
+#, c-format
+msgid "Configuration unchanged, no need to save.\n"
+msgstr ""
+
+#: src/setup/ncurses/mconf.c:518
+msgid "Do you wish to save your new configuration?"
+msgstr ""
+
+#: src/setup/ncurses/mconf.c:532
+#, c-format
+msgid ""
+"\n"
+"End of configuration.\n"
+msgstr ""
+
+#: src/setup/ncurses/mconf.c:537
+#, c-format
+msgid ""
+"\n"
+"Your configuration changes were NOT saved.\n"
+msgstr ""
+
+#: src/setup/gnunet-win-tool.c:52
+msgid "list all network adapters"
+msgstr ""
+
+#: src/setup/gnunet-win-tool.c:55
+msgid "install GNUnet as Windows service"
+msgstr ""
+
+#: src/setup/gnunet-win-tool.c:58
+msgid "uninstall GNUnet service"
+msgstr ""
+
+#: src/setup/gnunet-win-tool.c:61
+msgid "increase the maximum number of TCP/IP connections"
+msgstr ""
+
+#: src/setup/gnunet-win-tool.c:64
+msgid "display a file's hash value"
+msgstr ""
+
+#: src/setup/gnunet-win-tool.c:125
+#, c-format
+msgid "GNUnet service installed successfully.\n"
+msgstr ""
+
+#: src/setup/gnunet-win-tool.c:128 src/setup/gnunet-win-tool.c:156
+#, c-format
+msgid "This version of Windows doesn't support services.\n"
+msgstr ""
+
+#: src/setup/gnunet-win-tool.c:132 src/setup/gnunet-win-tool.c:160
+#, c-format
+msgid "Error: can't open Service Control Manager: %s\n"
+msgstr ""
+
+#: src/setup/gnunet-win-tool.c:137
+#, c-format
+msgid "Error: can't create service: %s\n"
+msgstr ""
+
+#: src/setup/gnunet-win-tool.c:140 src/setup/gnunet-win-tool.c:172
+#, c-format
+msgid "Unknown error.\n"
+msgstr ""
+
+#: src/setup/gnunet-win-tool.c:153
+#, c-format
+msgid "Service deleted.\n"
+msgstr ""
+
+#: src/setup/gnunet-win-tool.c:165
+#, c-format
+msgid "Error: can't access service: %s\n"
+msgstr ""
+
+#: src/setup/gnunet-win-tool.c:169
+#, c-format
+msgid "Error: can't delete service: %s\n"
+msgstr ""
+
+#: src/setup/gtk/ngconf.c:389
+msgid "Configuration saved."
+msgstr ""
+
+#: src/setup/gtk/ngconf.c:399
+msgid "Failed to save configuration."
+msgstr ""
+
+#: src/setup/gtk/ngconf.c:424
+msgid "Configuration changed. Save?"
+msgstr ""
+
+#: src/setup/gtk/ngconf.c:437
+msgid "Error saving configuration."
+msgstr ""
+
+#: src/setup/gtk/wizard_gtk.c:141
+msgid "(unknown connection)"
+msgstr ""
+
+#: src/setup/gtk/wizard_gtk.c:438
+msgid "Do you want to save the new configuration?"
+msgstr ""
+
+#: src/setup/gtk/wizard_gtk.c:470
+msgid "Unable to create user account:"
+msgstr ""
+
+#: src/setup/gtk/wizard_gtk.c:480
+msgid "Unable to change startup process:"
+msgstr ""
+
+#: src/setup/gtk/wizard_gtk.c:495
+msgid ""
+"Running gnunet-update failed.\n"
+"This maybe due to insufficient permissions, please check your "
+"configuration.\n"
+"Finally, run gnunet-update manually."
+msgstr ""
+
+#: src/setup/gnunet-setup.c:65
+#, c-format
+msgid "Can only set one option per invocation.\n"
+msgstr ""
+
+#: src/setup/gnunet-setup.c:73
+#, c-format
+msgid ""
+"Invalid syntax, argument to 'set' must have the format SECTION:"
+"OPTION=VALUE.\n"
+msgstr ""
+
+#: src/setup/gnunet-setup.c:87
+#, c-format
+msgid "Can only display one option per invocation.\n"
+msgstr ""
+
+#: src/setup/gnunet-setup.c:94
+#, c-format
+msgid ""
+"Invalid syntax, argument to 'get' must have the format SECTION:OPTION.\n"
+msgstr ""
+
+#: src/setup/gnunet-setup.c:108
+msgid "generate configuration for gnunetd, the GNUnet daemon"
+msgstr ""
+
+#: src/setup/gnunet-setup.c:111 src/setup/gnunet-setup.c:127
+#: src/server/gnunet-update.c:268
+msgid "print a value from the configuration file to stdout"
+msgstr ""
+
+#: src/setup/gnunet-setup.c:113 src/setup/gnunet-setup.c:129
+msgid "Tool to setup GNUnet."
+msgstr ""
+
+#: src/setup/gnunet-setup.c:115 src/setup/gnunet-setup.c:131
+msgid "update a value in the configuration file"
+msgstr ""
+
+#: src/setup/gnunet-setup.c:338
+#, c-format
+msgid "Too many arguments.\n"
+msgstr ""
+
+#: src/setup/gnunet-setup.c:344
+msgid "No interface specified, using default.\n"
+msgstr ""
+
+#: src/setup/gnunet-setup.c:392
+#, c-format
+msgid "Configuration file `%s' must be a filename (but is a directory).\n"
+msgstr ""
+
+#: src/setup/gnunet-setup.c:439
+#, c-format
+msgid "Undefined option.\n"
+msgstr ""
+
+#: src/setup/gnunet-setup.c:496
+#, c-format
+msgid "`%s' is not available.\n"
+msgstr ""
+
+#: src/setup/gnunet-setup.c:516
+#, c-format
+msgid "Unknown operation '%s'.\n"
+msgstr ""
+
+#: src/setup/gnunet-setup.c:517 src/util/getopt/getopt.c:1072
+#, c-format
+msgid "Use --help to get a list of options.\n"
+msgstr ""
+
+#: src/setup/text/conf.c:79
+msgid "yes"
+msgstr ""
+
+#: src/setup/text/conf.c:80
+msgid "no"
+msgstr ""
+
+#: src/setup/text/conf.c:106
+#, c-format
+msgid "\tEnter yes (%s), no (%s) or help (%s): "
+msgstr ""
+
+#: src/setup/text/conf.c:115
+msgid "\tPossible choices:\n"
+msgstr ""
+
+#: src/setup/text/conf.c:123
+msgid "\tUse single space prefix to avoid conflicts with hotkeys!\n"
+msgstr ""
+
+#: src/setup/text/conf.c:125
+#, c-format
+msgid "\tEnter string (type '%s' for default value `%s'): "
+msgstr ""
+
+#: src/setup/text/conf.c:143
+#, c-format
+msgid "\t Enter choice (default is %c): "
+msgstr ""
+
+#: src/setup/text/conf.c:147
+#, c-format
+msgid "\tEnter floating point (type '%s' for default value %f): "
+msgstr ""
+
+#: src/setup/text/conf.c:153
+#, c-format
+msgid ""
+"\tEnter unsigned integer in interval [%llu,%llu] (type '%s' for default "
+"value %llu): "
+msgstr ""
+
+#: src/setup/text/conf.c:187
+#, c-format
+msgid "Yes\n"
+msgstr ""
+
+#: src/setup/text/conf.c:192
+#, c-format
+msgid "No\n"
+msgstr ""
+
+#: src/setup/text/conf.c:195 src/setup/text/conf.c:236
+#: src/setup/text/conf.c:266 src/setup/text/conf.c:329
+#: src/setup/text/conf.c:387
+#, c-format
+msgid "Help\n"
+msgstr ""
+
+#: src/setup/text/conf.c:198 src/setup/text/conf.c:213
+#: src/setup/text/conf.c:276 src/setup/text/conf.c:307
+#: src/setup/text/conf.c:365
+#, c-format
+msgid "Abort\n"
+msgstr ""
+
+#: src/setup/text/conf.c:354 src/setup/text/conf.c:416
+#, c-format
+msgid ""
+"\n"
+"Invalid entry, try again (use '?' for help): "
+msgstr ""
+
+#: src/setup/text/conf.c:422
+#, c-format
+msgid "Unknown kind %x (internal error). Skipping option.\n"
+msgstr ""
+
+#: src/setup/text/conf.c:484
+msgid "\tDescend? (y/n/?) "
+msgstr ""
+
+#: src/setup/text/conf.c:493
+msgid "Aborted.\n"
+msgstr ""
+
+#: src/setup/text/conf.c:506
+msgid "Invalid entry.\n"
+msgstr ""
+
+#: src/setup/text/conf.c:524
+#, c-format
+msgid "Unknown kind %x (internal error). Aborting.\n"
+msgstr ""
+
+#: src/setup/text/conf.c:556
+#, c-format
+msgid "You can always press ENTER to keep the current value.\n"
+msgstr ""
+
+#: src/setup/text/conf.c:557
+#, c-format
+msgid "Use the '%s' key to abort.\n"
+msgstr ""
+
+#: src/setup/text/conf.c:575
+#, c-format
+msgid ""
+"Save configuration? Answer 'y' for yes, 'n' for no, 'r' to repeat "
+"configuration. "
+msgstr ""
+
+#: src/setup/text/conf.c:590
+#, c-format
+msgid "Configuration was unchanged, no need to save.\n"
+msgstr ""
+
+#: src/setup/text/conf.c:599
+#, c-format
+msgid "Configuration file `%s' written.\n"
+msgstr ""
+
+#: src/setup/lib/tree.c:191
+#, c-format
+msgid ""
+"Internal error: entry `%s' in section `%s' not found for visibility change!\n"
+msgstr ""
+
+#: src/setup/lib/wizard_util.c:126
+msgid "Can't open Service Control Manager"
+msgstr ""
+
+#: src/setup/lib/wizard_util.c:132
+msgid "Can't create service"
+msgstr ""
+
+#: src/setup/lib/wizard_util.c:136
+msgid "Error changing the permissions of the GNUnet directory"
+msgstr ""
+
+#: src/setup/lib/wizard_util.c:141
+msgid "Cannot write to the registry"
+msgstr ""
+
+#: src/setup/lib/wizard_util.c:144
+msgid "Can't access the service"
+msgstr ""
+
+#: src/setup/lib/wizard_util.c:147
+msgid "Can't delete the service"
+msgstr ""
+
+#: src/setup/lib/wizard_util.c:150
+msgid "Unknown error"
+msgstr ""
+
+#: src/setup/lib/wizard_util.c:186
+msgid "This version of Windows does not support multiple users."
+msgstr ""
+
+#: src/setup/lib/wizard_util.c:190
+msgid "Error creating user"
+msgstr ""
+
+#: src/setup/lib/wizard_util.c:194
+msgid "Error accessing local security policy"
+msgstr ""
+
+#: src/setup/lib/wizard_util.c:199
+msgid "Error granting service right to user"
+msgstr ""
+
+#: src/setup/lib/wizard_util.c:204
+msgid "Unknown error while creating a new user"
+msgstr ""
+
+#: src/setup/lib/gns.c:297
+#, c-format
+msgid ""
+"Configuration does not satisfy constraints of configuration specification "
+"file `%s'!\n"
+msgstr ""
+
+#: src/util/disk/storage.c:172
+#, c-format
+msgid "`%s' failed for drive `%s': %u\n"
+msgstr ""
+
+#: src/util/disk/storage.c:524
+#, c-format
+msgid "Expected `%s' to be a directory!\n"
+msgstr ""
+
+#: src/util/error/error.c:152
+#, c-format
+msgid "Message `%.*s' repeated %u times in the last %llus\n"
+msgstr ""
+
+#: src/util/error/error.c:254
+#, c-format
+msgid ""
+"\n"
+"Press any key to continue\n"
+msgstr ""
+
+#: src/util/error/error.c:336 src/util/error/error.c:371
+msgid "DEBUG"
+msgstr ""
+
+#: src/util/error/error.c:338 src/util/error/error.c:373
+msgid "STATUS"
+msgstr ""
+
+#: src/util/error/error.c:340 src/util/error/error.c:377
+msgid "WARNING"
+msgstr ""
+
+#: src/util/error/error.c:342 src/util/error/error.c:379
+msgid "ERROR"
+msgstr ""
+
+#: src/util/error/error.c:344 src/util/error/error.c:381
+msgid "FATAL"
+msgstr ""
+
+#: src/util/error/error.c:346 src/util/error/error.c:383
+msgid "USER"
+msgstr ""
+
+#: src/util/error/error.c:348 src/util/error/error.c:385
+msgid "ADMIN"
+msgstr ""
+
+#: src/util/error/error.c:350 src/util/error/error.c:387
+msgid "DEVELOPER"
+msgstr ""
+
+#: src/util/error/error.c:352 src/util/error/error.c:389
+msgid "REQUEST"
+msgstr ""
+
+#: src/util/error/error.c:354 src/util/error/error.c:391
+msgid "BULK"
+msgstr ""
+
+#: src/util/error/error.c:356 src/util/error/error.c:393
+msgid "IMMEDIATE"
+msgstr ""
+
+#: src/util/error/error.c:358
+msgid "ALL"
+msgstr ""
+
+#: src/util/error/error.c:375
+msgid "INFO"
+msgstr ""
+
+#: src/util/error/error.c:394
+msgid "NOTHING"
+msgstr ""
+
+#: src/util/network_client/tcpio.c:98 src/util/network_client/tcpio.c:154
+msgid "Could not find valid value for HOST in section NETWORK.\n"
+msgstr ""
+
+#: src/util/network_client/tcpio.c:123
+#, c-format
+msgid "Syntax error in configuration entry HOST in section NETWORK: `%s'\n"
+msgstr ""
+
+#: src/util/network_client/tcpio.c:335
+#, c-format
+msgid "Error connecting to %s:%u. Is the daemon running?\n"
+msgstr ""
+
+#: src/util/network_client/tcpio.c:398
+#, c-format
+msgid "Cannot connect to %s:%u: %s\n"
+msgstr ""
+
+#: src/util/network_client/tcpio.c:636
+msgid "Reading result from gnunetd failed, reply invalid!\n"
+msgstr ""
+
+#: src/util/getopt/setoption.c:59
+#, c-format
+msgid ""
+"Setting option `%s' in section `%s' to `%s' when processing command line "
+"option `%s' was denied.\n"
+msgstr ""
+
+#: src/util/getopt/setoption.c:138 src/util/getopt/setoption.c:155
+#, c-format
+msgid "You must pass a number to the `%s' option.\n"
+msgstr ""
+
+#: src/util/getopt/printhelp.c:49
+#, c-format
+msgid ""
+"Arguments mandatory for long options are also mandatory for short options.\n"
+msgstr ""
+
+#: src/util/getopt/getopt.c:684
+#, c-format
+msgid "%s: option `%s' is ambiguous\n"
+msgstr ""
+
+#: src/util/getopt/getopt.c:710
+#, c-format
+msgid "%s: option `--%s' does not allow an argument\n"
+msgstr ""
+
+#: src/util/getopt/getopt.c:716
+#, c-format
+msgid "%s: option `%c%s' does not allow an argument\n"
+msgstr ""
+
+#: src/util/getopt/getopt.c:737 src/util/getopt/getopt.c:909
+#, c-format
+msgid "%s: option `%s' requires an argument\n"
+msgstr ""
+
+#: src/util/getopt/getopt.c:767
+#, c-format
+msgid "%s: unrecognized option `--%s'\n"
+msgstr ""
+
+#: src/util/getopt/getopt.c:771
+#, c-format
+msgid "%s: unrecognized option `%c%s'\n"
+msgstr ""
+
+#: src/util/getopt/getopt.c:797
+#, c-format
+msgid "%s: illegal option -- %c\n"
+msgstr ""
+
+#: src/util/getopt/getopt.c:799
+#, c-format
+msgid "%s: invalid option -- %c\n"
+msgstr ""
+
+#: src/util/getopt/getopt.c:828 src/util/getopt/getopt.c:958
+#, c-format
+msgid "%s: option requires an argument -- %c\n"
+msgstr ""
+
+#: src/util/getopt/getopt.c:876
+#, c-format
+msgid "%s: option `-W %s' is ambiguous\n"
+msgstr ""
+
+#: src/util/getopt/getopt.c:894
+#, c-format
+msgid "%s: option `-W %s' does not allow an argument\n"
+msgstr ""
+
+#: src/util/network/ip.c:96 src/util/network/ip.c:160 src/transports/ip.c:260
+#, c-format
+msgid "No interface specified in section `%s' under `%s'!\n"
+msgstr ""
+
+#: src/util/network/ip.c:127 src/util/network/ip.c:246 src/transports/ip.c:291
+#, c-format
+msgid "Could not obtain IP for interface `%s' using `%s'.\n"
+msgstr ""
+
+#: src/util/network/ip.c:216
+#, c-format
+msgid ""
+"Could not find interface `%s' using `%s', trying to find another interface.\n"
+msgstr ""
+
+#: src/util/network/ip.c:295
+#, c-format
+msgid "Could not find an IP address for interface `%s'.\n"
+msgstr ""
+
+#: src/util/network/ip.c:306
+#, c-format
+msgid ""
+"There is more than one IP address specified for interface `%s'.\n"
+"GNUnet will use %s.\n"
+msgstr ""
+
+#: src/util/network/ip.c:330
+#, c-format
+msgid "Could not resolve `%s' to determine our IP address: %s\n"
+msgstr ""
+
+#: src/util/network/ip.c:363
+#, c-format
+msgid "GNUnet now uses the IP address %s.\n"
+msgstr ""
+
+#: src/util/network/ipcheck.c:106 src/util/network/ipcheck.c:136
+#: src/util/network/ipcheck.c:186 src/util/network/ipcheck.c:211
+#: src/util/network/ipcheck.c:219
+#, c-format
+msgid "Invalid format for IP: `%s'\n"
+msgstr ""
+
+#: src/util/network/ipcheck.c:167
+#, c-format
+msgid "Invalid network notation ('/%d' is not legal in IPv4 CIDR)."
+msgstr ""
+
+#: src/util/network/ipcheck.c:269
+#, c-format
+msgid "Invalid network notation (does not end with ';': `%s')\n"
+msgstr ""
+
+#: src/util/network/ipcheck.c:306
+#, c-format
+msgid "Wrong format `%s' for netmask\n"
+msgstr ""
+
+#: src/util/network/ipcheck.c:338
+#, c-format
+msgid "Wrong format `%s' for network\n"
+msgstr ""
+
+#: src/util/network/dns.c:472
+#, c-format
+msgid "Could not resolve `%s' (%s): %s\n"
+msgstr ""
+
+#: src/util/network/dns.c:523 src/util/network/dns.c:591
+#, c-format
+msgid "Could not find IP of host `%s': %s\n"
+msgstr ""
+
+#: src/util/network/select.c:310
+msgid "Received malformed message (too small) from connection. Closing.\n"
+msgstr ""
+
+#: src/util/network/select.c:495
+#, c-format
+msgid "select listen socket for `%s' not valid!\n"
+msgstr ""
+
+#: src/util/config/config.c:296
+#, c-format
+msgid "Syntax error in configuration file `%s' at line %d.\n"
+msgstr ""
+
+#: src/util/config/config.c:592
+#, c-format
+msgid ""
+"Configuration value '%llu' for '%s' in section '%s' is out of legal bounds [%"
+"llu,%llu]\n"
+msgstr ""
+
+#: src/util/config/config.c:602
+#, c-format
+msgid "Configuration value '%s' for '%s' in section '%s' should be a number\n"
+msgstr ""
+
+#: src/util/config/config.c:688
+#, c-format
+msgid ""
+"Configuration value '%s' for '%s' in section '%s' is not in set of legal "
+"choices\n"
+msgstr ""
+
+#: src/util/crypto/locking_gcrypt.c:80
+#, c-format
+msgid "libgcrypt has not the expected version (version %s is required).\n"
+msgstr ""
+
+#: src/util/crypto/symcipher_gcrypt.c:46 src/util/crypto/symcipher_gcrypt.c:53
+#: src/util/crypto/hostkey_gcrypt.c:64 src/util/crypto/hostkey_gcrypt.c:71
+#: src/util/loggers/file.c:271 src/util/loggers/file.c:289
+#: src/applications/sqstore_sqlite/sqlite.c:45
+#: src/applications/sqstore_sqlite/sqlite.c:52
+#: src/applications/kvstore_sqlite/kv_sqlite.c:44
+#: src/applications/kvstore_sqlite/kv_sqlite.c:51
+#: src/applications/kvstore_mysql/kv_mysql.c:44
+#: src/applications/kvstore_mysql/kv_mysql.c:51
+#: src/applications/dstore_sqlite/dstore.c:94
+#: src/applications/dstore_sqlite/dstore.c:101
+#: src/applications/dstore_sqlite/dstore.c:222
+#: src/applications/dstore_sqlite/dstore.c:259
+#: src/applications/dstore_sqlite/dstore.c:285
+#: src/applications/dstore_sqlite/dstore.c:345
+#: src/applications/dstore_sqlite/dstore.c:366
+#: src/applications/dstore_sqlite/dstore.c:378
+#: src/applications/dstore_sqlite/dstore.c:407
+#: src/applications/dstore_sqlite/dstore.c:511
+#: src/applications/dstore_sqlite/dstore.c:555
+#: src/include/gnunet_util_error.h:249 src/include/gnunet_util_error.h:256
+#: src/include/gnunet_util_error.h:263
+#, c-format
+msgid "`%s' failed at %s:%d with error: %s\n"
+msgstr ""
+
+#: src/util/crypto/hostkey_gcrypt.c:907
+#, c-format
+msgid "RSA signature verification failed at %s:%d: %s\n"
+msgstr ""
+
+#: src/util/os/user.c:108 src/util/os/user.c:125
+#, c-format
+msgid "`%s' returned with error code %u"
+msgstr ""
+
+#: src/util/os/user.c:155 src/util/os/user.c:200
+#, c-format
+msgid "Cannot obtain information about user `%s': %s\n"
+msgstr ""
+
+#: src/util/os/user.c:156
+msgid "No such user"
+msgstr ""
+
+#: src/util/os/user.c:171
+#, c-format
+msgid "Cannot change user/group to `%s': %s\n"
+msgstr ""
+
+#: src/util/os/semaphore.c:227
+#, c-format
+msgid "Can't create semaphore: %i"
+msgstr ""
+
+#: src/util/os/cpustatus.c:464
+msgid "Cannot query the CPU usage (Windows NT).\n"
+msgstr ""
+
+#: src/util/os/cpustatus.c:487
+msgid "Cannot query the CPU usage (Win 9x)\n"
+msgstr ""
+
+#: src/util/os/dso.c:59
+#, c-format
+msgid "Initialization of plugin mechanism failed: %s!\n"
+msgstr ""
+
+#: src/util/os/dso.c:120
+#, c-format
+msgid "`%s' failed for library `%s' with error: %s\n"
+msgstr ""
+
+#: src/util/os/dso.c:162
+#, c-format
+msgid "`%s' failed to resolve method '%s' with error: %s\n"
+msgstr ""
+
+#: src/util/os/statuscalls.c:197 src/util/os/statuscalls.c:342
+#, c-format
+msgid "Failed to parse interface data from `%s'.\n"
+msgstr ""
+
+#: src/util/os/statuscalls.c:390 src/util/os/statuscalls.c:400
+#, c-format
+msgid ""
+"No network interfaces defined in configuration section `%s' under `%s'!\n"
+msgstr ""
+
+#: src/util/os/osconfig.c:153
+msgid "Setting open descriptor limit not supported.\n"
+msgstr ""
+
+#: src/util/os/osconfig.c:463 src/util/os/osconfig.c:492
+#, c-format
+msgid "Command `%s' failed with error code %u\n"
+msgstr ""
+
+#: src/util/os/priority.c:78
+#, c-format
+msgid "Invalid process priority `%s'\n"
+msgstr ""
+
+#: src/util/threads/semaphore.c:168 src/util/threads/pthread.c:157
+#: src/util/threads/mutex.c:146
+#, c-format
+msgid "Real-time delay violation (%llu ms) at %s:%u\n"
+msgstr ""
+
+#: src/util/threads/pthread.c:169 src/util/threads/pthread.c:176
+#: src/util/threads/pthread.c:182 src/util/threads/pthread.c:276
+#, c-format
+msgid "`%s' failed with error code %s: %s\n"
+msgstr ""
+
+#: src/util/threads/pthread.c:188 src/util/threads/pthread.c:286
+#, c-format
+msgid "`%s' failed with error code %d: %s\n"
+msgstr ""
+
+#: src/util/threads/mutex.c:155 src/util/threads/mutex.c:201
+#, c-format
+msgid "Invalid argument for `%s'.\n"
+msgstr ""
+
+#: src/util/threads/mutex.c:160
+#, c-format
+msgid "Deadlock due to `%s'.\n"
+msgstr ""
+
+#: src/util/threads/mutex.c:187
+#, c-format
+msgid "Lock acquired for too long (%llu ms) at %s:%u\n"
+msgstr ""
+
+#: src/util/threads/mutex.c:207
+#, c-format
+msgid "Permission denied for `%s'.\n"
+msgstr ""
+
+#: src/util/boot/startup.c:259
+#, c-format
+msgid "Failed to run %s: %s %d\n"
+msgstr ""
+
+#: src/util/string/string.c:55
+msgid "ms"
+msgstr ""
+
+#: src/util/string/string.c:61
+msgid "s"
+msgstr ""
+
+#: src/util/string/string.c:65
+msgid "m"
+msgstr ""
+
+#: src/util/string/string.c:69
+msgid "h"
+msgstr ""
+
+#: src/util/string/string.c:73
+msgid " days"
+msgstr ""
+
+#: src/util/string/string.c:89
+msgid "b"
+msgstr ""
+
+#: src/util/string/string.c:95
+msgid "KiB"
+msgstr ""
+
+#: src/util/string/string.c:99
+msgid "MiB"
+msgstr ""
+
+#: src/util/string/string.c:103
+msgid "GiB"
+msgstr ""
+
+#: src/util/string/string.c:107
+msgid "TiB"
+msgstr ""
+
+#: src/util/string/string.c:226
+msgid "Failed to expand `$HOME': environment variable `HOME' not set"
+msgstr ""
+
+#: src/util/loggers/file.c:229
+#, c-format
+msgid "Failed to open log-file `%s': %s\n"
+msgstr ""
+
+#: src/util/loggers/file.c:250
+msgid "GNUnet error log"
+msgstr ""
+
+#: src/util/loggers/memory.c:72
+msgid "Out of memory (for logging)\n"
+msgstr ""
+
+#: src/util/pseudonym/names.c:79
+msgid "no-name"
+msgstr ""
+
+#: src/applications/datastore/datastore.c:183
+#: src/applications/datastore/datastore.c:199
+#, c-format
+msgid "Availability test failed for `%s' at %s:%d.\n"
+msgstr ""
+
+#: src/applications/datastore/datastore.c:401
+msgid "# requests filtered by bloom filter"
+msgstr ""
+
+#: src/applications/datastore/datastore.c:403
+msgid "# bloom filter false positives"
+msgstr ""
+
+#: src/applications/datastore/datastore.c:406
+msgid "# bytes allowed in datastore"
+msgstr ""
+
+#: src/applications/datastore/datastore.c:423
+msgid "Failed to load state service. Trying to do without.\n"
+msgstr ""
+
+#: src/applications/datastore/datastore.c:529
+#, c-format
+msgid "Datastore conversion at approximately %u%%\n"
+msgstr ""
+
+#: src/applications/datastore/datastore.c:576
+#, c-format
+msgid "Starting datastore conversion (this may take a while).\n"
+msgstr ""
+
+#: src/applications/datastore/datastore.c:584
+#, c-format
+msgid "Completed datastore conversion.\n"
+msgstr ""
+
+#: src/applications/datastore/datastore.c:592
+msgid "Failed to load sqstore service. Check your configuration!\n"
+msgstr ""
+
+#: src/applications/rpc/rpc.c:339
+#, c-format
+msgid ""
+"%s:%d - RPC %s:%p could not be registered: another callback is already using "
+"this name (%p)\n"
+msgstr ""
+
+#: src/applications/rpc/rpc.c:398
+#, c-format
+msgid "%s:%d - async RPC %s:%p could not be unregistered: not found\n"
+msgstr ""
+
+#: src/applications/rpc/rpc.c:951
+#, c-format
+msgid "`%s' registering handlers %d %d %d\n"
+msgstr ""
+
+#: src/applications/rpc/rpc.c:972
+#, c-format
+msgid "Failed to initialize `%s' service.\n"
+msgstr ""
+
+#: src/applications/tbench/tbenchtest.c:53
+#, c-format
+msgid "Using %u messages of size %u for %u times.\n"
+msgstr ""
+
+#: src/applications/tbench/tbenchtest.c:85
+#, c-format
+msgid "Times: max %16llu min %16llu mean %12.3f variance %12.3f\n"
+msgstr ""
+
+#: src/applications/tbench/tbenchtest.c:89
+#, c-format
+msgid "Loss: max %16u min %16u mean %12.3f variance %12.3f\n"
+msgstr ""
+
+#: src/applications/tbench/tbenchtest.c:95
+#, c-format
+msgid ""
+"\n"
+"Failed to receive reply from gnunetd.\n"
+msgstr ""
+
+#: src/applications/tbench/tbenchtest.c:149
+#, c-format
+msgid "Running benchmark...\n"
+msgstr ""
+
+#: src/applications/tbench/tbench.c:422
+msgid "allows profiling of direct peer-to-peer connections"
+msgstr ""
+
+#: src/applications/tbench/gnunet-tbench.c:63
+#: src/applications/tracekit/gnunet-tracekit.c:302
+msgid "Start GNUnet transport benchmarking tool."
+msgstr ""
+
+#: src/applications/tbench/gnunet-tbench.c:65
+msgid "output in gnuplot format"
+msgstr ""
+
+#: src/applications/tbench/gnunet-tbench.c:69
+msgid "number of iterations"
+msgstr ""
+
+#: src/applications/tbench/gnunet-tbench.c:73
+msgid "number of messages to use per iteration"
+msgstr ""
+
+#: src/applications/tbench/gnunet-tbench.c:76
+msgid "receiver host identifier (ENC file name)"
+msgstr ""
+
+#: src/applications/tbench/gnunet-tbench.c:79
+msgid "message size"
+msgstr ""
+
+#: src/applications/tbench/gnunet-tbench.c:82
+msgid "sleep for SPACE ms after each a message block"
+msgstr ""
+
+#: src/applications/tbench/gnunet-tbench.c:85
+msgid "time to wait for the completion of an iteration (in ms)"
+msgstr ""
+
+#: src/applications/tbench/gnunet-tbench.c:90
+msgid "number of messages in a message block"
+msgstr ""
+
+#: src/applications/tbench/gnunet-tbench.c:126
+#: src/applications/tracekit/gnunet-tracekit.c:352
+#: src/applications/tracekit/tracekittest.c:133
+#: src/applications/template/gnunet-template.c:95
+#: src/applications/stats/gnunet-stats.c:121
+#: src/applications/vpn/gnunet-vpn.c:154
+#, c-format
+msgid "Error establishing connection with gnunetd.\n"
+msgstr ""
+
+#: src/applications/tbench/gnunet-tbench.c:142
+#, c-format
+msgid "You must specify a receiver!\n"
+msgstr ""
+
+#: src/applications/tbench/gnunet-tbench.c:152
+#, c-format
+msgid "Invalid receiver peer ID specified (`%s' is not valid name).\n"
+msgstr ""
+
+#: src/applications/tbench/gnunet-tbench.c:189
+#, c-format
+msgid "Time:\n"
+msgstr ""
+
+#: src/applications/tbench/gnunet-tbench.c:190
+#, c-format
+msgid "\tmax %llums\n"
+msgstr ""
+
+#: src/applications/tbench/gnunet-tbench.c:191
+#, c-format
+msgid "\tmin %llums\n"
+msgstr ""
+
+#: src/applications/tbench/gnunet-tbench.c:192
+#, c-format
+msgid "\tmean %8.4fms\n"
+msgstr ""
+
+#: src/applications/tbench/gnunet-tbench.c:193
+#, c-format
+msgid "\tvariance %8.4fms\n"
+msgstr ""
+
+#: src/applications/tbench/gnunet-tbench.c:195
+#, c-format
+msgid "Loss:\n"
+msgstr ""
+
+#: src/applications/tbench/gnunet-tbench.c:196
+#, c-format
+msgid "\tmax %u\n"
+msgstr ""
+
+#: src/applications/tbench/gnunet-tbench.c:197
+#, c-format
+msgid "\tmin %u\n"
+msgstr ""
+
+#: src/applications/tbench/gnunet-tbench.c:198
+#, c-format
+msgid "\tmean %8.4f\n"
+msgstr ""
+
+#: src/applications/tbench/gnunet-tbench.c:199
+#, c-format
+msgid "\tvariance %8.4f\n"
+msgstr ""
+
+#: src/applications/tbench/gnunet-tbench.c:205
+#, c-format
+msgid "Output format not known, this should not happen.\n"
+msgstr ""
+
+#: src/applications/tbench/gnunet-tbench.c:211
+#, c-format
+msgid ""
+"\n"
+"Did not receive the message from gnunetd. Is gnunetd running?\n"
+msgstr ""
+
+#: src/applications/traffic/traffic.c:454
+#, c-format
+msgid "# bytes transmitted of type %d"
+msgstr ""
+
+#: src/applications/traffic/traffic.c:470
+#, c-format
+msgid "# bytes received of type %d"
+msgstr ""
+
+#: src/applications/traffic/traffic.c:489
+#, c-format
+msgid "# bytes received in plaintext of type %d"
+msgstr ""
+
+#: src/applications/traffic/traffic.c:652
+msgid "tracks bandwidth utilization by gnunetd"
+msgstr ""
+
+#: src/applications/sqstore_sqlite/sqlite.c:218
+#, c-format
+msgid "Unable to initialize SQLite: %s.\n"
+msgstr ""
+
+#: src/applications/sqstore_sqlite/sqlite.c:434
+#: src/applications/sqstore_sqlite/sqlite.c:469
+#, c-format
+msgid "Invalid data in %s. Trying to fix (by deletion).\n"
+msgstr ""
+
+#: src/applications/sqstore_sqlite/sqlite.c:435
+#: src/applications/sqstore_sqlite/sqlite.c:470
+msgid "sqlite datastore"
+msgstr ""
+
+#: src/applications/sqstore_sqlite/sqlite.c:1474
+#: src/applications/sqstore_mysql/mysql.c:1078
+msgid "# bytes in datastore"
+msgstr ""
+
+#: src/applications/sqstore_sqlite/sqlite.c:1476
+msgid "# bytes allocated by SQLite"
+msgstr ""
+
+#: src/applications/sqstore_mysql/mysql.c:1085
+#: src/applications/sqstore_mysql/mysql.c:1160
+msgid ""
+"Failed to load MySQL database module. Check that MySQL is running and "
+"configured properly!\n"
+msgstr ""
+
+#: src/applications/tracekit/gnunet-tracekit.c:104
+#, c-format
+msgid "`%s' connected to `%s'.\n"
+msgstr ""
+
+#: src/applications/tracekit/gnunet-tracekit.c:110
+#: src/applications/tracekit/tracekittest.c:67
+#, c-format
+msgid "`%s' is not connected to any peer.\n"
+msgstr ""
+
+#: src/applications/tracekit/gnunet-tracekit.c:295
+msgid "probe network to the given DEPTH"
+msgstr ""
+
+#: src/applications/tracekit/gnunet-tracekit.c:299
+msgid ""
+"specify output format; 0 for human readable output, 1 for dot, 2 for vcg"
+msgstr ""
+
+#: src/applications/tracekit/gnunet-tracekit.c:306
+msgid "use PRIORITY for the priority of the trace request"
+msgstr ""
+
+#: src/applications/tracekit/gnunet-tracekit.c:310
+msgid "wait DELAY seconds for replies"
+msgstr ""
+
+#: src/applications/tracekit/gnunet-tracekit.c:344
+#, c-format
+msgid ""
+"Format specification invalid. Use 0 for user-readable, 1 for dot, 2 for "
+"vcg.\n"
+msgstr ""
+
+#: src/applications/tracekit/tracekittest.c:60
+#, c-format
+msgid "`%.*s' connected to `%.*s'.\n"
+msgstr ""
+
+#: src/applications/tracekit/tracekit.c:440
+msgid "allows mapping of the network topology"
+msgstr ""
+
+#: src/applications/advertising/advertising_test.c:47
+#: src/applications/hostlist/hostlisttest.c:40
+#: src/applications/session/sessiontest.c:40
+#: src/applications/session/sessiontest_nat_http.c:40
+#: src/applications/session/sessiontest_nat.c:40
+#: src/applications/stats/statistics.c:247
+msgid "# of connected peers"
+msgstr ""
+
+#: src/applications/advertising/advertising.c:194
+#, c-format
+msgid "HELLO message from `%s' has an invalid signature. Dropping.\n"
+msgstr ""
+
+#: src/applications/advertising/advertising.c:205
+msgid "HELLO message has expiration too far in the future. Dropping.\n"
+msgstr ""
+
+#: src/applications/advertising/advertising.c:406
+msgid "Could not send HELLO+PING, ping buffer full.\n"
+msgstr ""
+
+#: src/applications/advertising/advertising.c:429
+msgid "Failed to create an advertisement for this peer. Will not send PING.\n"
+msgstr ""
+
+#: src/applications/advertising/advertising.c:581
+#, c-format
+msgid "Advertising my transport %d to selected peers.\n"
+msgstr ""
+
+#: src/applications/advertising/advertising.c:590
+msgid ""
+"Announcing ourselves pointless: no other peers are known to us so far.\n"
+msgstr ""
+
+#: src/applications/advertising/advertising.c:868
+msgid "# Peer advertisements received"
+msgstr ""
+
+#: src/applications/advertising/advertising.c:871
+msgid "# Peer advertisements of type NAT received"
+msgstr ""
+
+#: src/applications/advertising/advertising.c:874
+msgid "# Peer advertisements confirmed via PONG"
+msgstr ""
+
+#: src/applications/advertising/advertising.c:877
+msgid "# Peer advertisements updating earlier HELLOs"
+msgstr ""
+
+#: src/applications/advertising/advertising.c:880
+msgid "# Peer advertisements discarded due to load"
+msgstr ""
+
+#: src/applications/advertising/advertising.c:883
+msgid "# Peer advertisements for unsupported transport"
+msgstr ""
+
+#: src/applications/advertising/advertising.c:886
+msgid "# Peer advertisements not confirmed due to ping busy"
+msgstr ""
+
+#: src/applications/advertising/advertising.c:889
+msgid "# Peer advertisements not confirmed due to lack of self ad"
+msgstr ""
+
+#: src/applications/advertising/advertising.c:892
+msgid "# Peer advertisements not confirmed due to send error"
+msgstr ""
+
+#: src/applications/advertising/advertising.c:894
+msgid "# Self advertisments transmitted"
+msgstr ""
+
+#: src/applications/advertising/advertising.c:896
+msgid "# Foreign advertisements forwarded"
+msgstr ""
+
+#: src/applications/advertising/advertising.c:898
+#: src/applications/pingpong/pingpong.c:528
+msgid "# plaintext PING messages sent"
+msgstr ""
+
+#: src/applications/advertising/advertising.c:904
+#: src/applications/session/connect.c:932
+#, c-format
+msgid "`%s' registering handler %d (plaintext and ciphertext)\n"
+msgstr ""
+
+#: src/applications/advertising/advertising.c:922
+msgid ""
+"ensures that this peer is known by other peers and discovers other peers"
+msgstr ""
+
+#: src/applications/fragmentation/fragmentation.c:578
+msgid "# messages defragmented"
+msgstr ""
+
+#: src/applications/fragmentation/fragmentation.c:580
+msgid "# messages fragmented"
+msgstr ""
+
+#: src/applications/fragmentation/fragmentation.c:581
+msgid "# fragments discarded"
+msgstr ""
+
+#: src/applications/fragmentation/fragmentation.c:592
+#, c-format
+msgid "`%s' registering handler %d\n"
+msgstr ""
+
+#: src/applications/topology_default/topology.c:466
+#, c-format
+msgid "Could not read friends list `%s'\n"
+msgstr ""
+
+#: src/applications/topology_default/topology.c:485
+#, c-format
+msgid "Failed to read friends list from `%s'\n"
+msgstr ""
+
+#: src/applications/topology_default/topology.c:505
+msgid "Syntax error in topology specification, skipping bytes.\n"
+msgstr ""
+
+#: src/applications/topology_default/topology.c:523
+#, c-format
+msgid "Syntax error in topology specification, skipping bytes `%s'.\n"
+msgstr ""
+
+#: src/applications/topology_default/topology.c:535
+msgid ""
+"Fewer friends specified than required by minimum friend count. Will only "
+"connect to friends.\n"
+msgstr ""
+
+#: src/applications/topology_default/topology.c:543
+msgid ""
+"More friendly connections required than target total number of connections.\n"
+msgstr ""
+
+#: src/applications/topology_default/topology.c:726
+msgid "maintains GNUnet default mesh topology"
+msgstr ""
+
+#: src/applications/chat/tools/gnunet-chat.c:107
+msgid "anonymous"
+msgstr ""
+
+#: src/applications/chat/tools/gnunet-chat.c:113
+#, c-format
+msgid "`%s' said: %s\n"
+msgstr ""
+
+#: src/applications/chat/tools/gnunet-chat.c:116
+#: src/applications/chat/tools/gnunet-chat.c:119
+#, c-format
+msgid "`%s' said to you: %s\n"
+msgstr ""
+
+#: src/applications/chat/tools/gnunet-chat.c:122
+#, c-format
+msgid "`%s' said for sure: %s\n"
+msgstr ""
+
+#: src/applications/chat/tools/gnunet-chat.c:125
+#, c-format
+msgid "`%s' said to you for sure: %s\n"
+msgstr ""
+
+#: src/applications/chat/tools/gnunet-chat.c:128
+#, c-format
+msgid "`%s' was confirmed that you received: %s\n"
+msgstr ""
+
+#: src/applications/chat/tools/gnunet-chat.c:131
+#, c-format
+msgid "`%s' was confirmed that you and only you received: %s\n"
+msgstr ""
+
+#: src/applications/chat/tools/gnunet-chat.c:134
+#, c-format
+msgid "`%s' was confirmed that you received from him or her: %s\n"
+msgstr ""
+
+#: src/applications/chat/tools/gnunet-chat.c:139
+#, c-format
+msgid "`%s' was confirmed that you and only you received from him or her: %s\n"
+msgstr ""
+
+#: src/applications/chat/tools/gnunet-chat.c:142
+#, c-format
+msgid "`%s' said off the record: %s\n"
+msgstr ""
+
+#: src/applications/chat/tools/gnunet-chat.c:145
+#, c-format
+msgid "<%s> said using an unknown message type: %s\n"
+msgstr ""
+
+#: src/applications/chat/tools/gnunet-chat.c:167
+#, c-format
+msgid "`%s' entered the room\n"
+msgstr ""
+
+#: src/applications/chat/tools/gnunet-chat.c:167
+#, c-format
+msgid "`%s' left the room\n"
+msgstr ""
+
+#: src/applications/chat/tools/gnunet-chat.c:239
+#: src/applications/chat/tools/gnunet-chat.c:348
+#, c-format
+msgid "Failed to send message.\n"
+msgstr ""
+
+#: src/applications/chat/tools/gnunet-chat.c:265
+#: src/applications/chat/tools/gnunet-chat.c:524
+#, c-format
+msgid "Joined room `%s' as user `%s'.\n"
+msgstr ""
+
+#: src/applications/chat/tools/gnunet-chat.c:293
+#, c-format
+msgid "Changed username to `%s'.\n"
+msgstr ""
+
+#: src/applications/chat/tools/gnunet-chat.c:301
+#, c-format
+msgid "Unknown command `%s'.\n"
+msgstr ""
+
+#: src/applications/chat/tools/gnunet-chat.c:316
+#, c-format
+msgid "Syntax: /msg USERNAME MESSAGE"
+msgstr ""
+
+#: src/applications/chat/tools/gnunet-chat.c:324
+#, c-format
+msgid "Unknown user `%s'\n"
+msgstr ""
+
+#: src/applications/chat/tools/gnunet-chat.c:339
+#, c-format
+msgid "User `%s' is currently not in the room!\n"
+msgstr ""
+
+#: src/applications/chat/tools/gnunet-chat.c:361
+#, c-format
+msgid "Users in room `%s': "
+msgstr ""
+
+#: src/applications/chat/tools/gnunet-chat.c:390
+msgid ""
+"Use `/join #roomname' to join a chat room. Joining a room will cause you to "
+"leave the current room"
+msgstr ""
+
+#: src/applications/chat/tools/gnunet-chat.c:393
+msgid ""
+"Use `/nick nickname' to change your nickname. This will cause you to leave "
+"the current room and immediately rejoin it with the new name."
+msgstr ""
+
+#: src/applications/chat/tools/gnunet-chat.c:396
+msgid ""
+"Use `/msg nickname message' to send a private message to the specified user"
+msgstr ""
+
+#: src/applications/chat/tools/gnunet-chat.c:398
+msgid "The `/notice' command is an alias for `/msg'"
+msgstr ""
+
+#: src/applications/chat/tools/gnunet-chat.c:400
+msgid "The `/query' command is an alias for `/msg'"
+msgstr ""
+
+#: src/applications/chat/tools/gnunet-chat.c:402
+msgid "Use `/quit' to terminate gnunet-chat"
+msgstr ""
+
+#: src/applications/chat/tools/gnunet-chat.c:404
+msgid "The `/leave' command is an alias for `/quit'"
+msgstr ""
+
+#: src/applications/chat/tools/gnunet-chat.c:407
+msgid "Use `/names' to list all of the current members in the chat room"
+msgstr ""
+
+#: src/applications/chat/tools/gnunet-chat.c:409
+msgid "Use `/help command' to get help for a specific command"
+msgstr ""
+
+#: src/applications/chat/tools/gnunet-chat.c:457
+msgid "Join a chat on GNUnet."
+msgstr ""
+
+#: src/applications/chat/tools/gnunet-chat.c:461
+msgid "set the nickname to use (required)"
+msgstr ""
+
+#: src/applications/chat/tools/gnunet-chat.c:464
+msgid "set the chat room to join"
+msgstr ""
+
+#: src/applications/chat/tools/gnunet-chat.c:495
+#, c-format
+msgid "You must specify a nickname\n"
+msgstr ""
+
+#: src/applications/chat/tools/gnunet-chat.c:515
+#, c-format
+msgid "Failed to join room `%s'\n"
+msgstr ""
+
+#: src/applications/chat/module/chat.c:325
+#, c-format
+msgid "`%s' registering CS handlers %d and %d\n"
+msgstr ""
+
+#: src/applications/chat/module/chat.c:347
+msgid "enables P2P-chat (incomplete)"
+msgstr ""
+
+#: src/applications/chat/lib/messaging.c:353
+#: src/applications/identity/hostkey.c:122
+#, c-format
+msgid "Failed to access GNUnet home directory `%s'\n"
+msgstr ""
+
+#: src/applications/chat/lib/messaging.c:389
+#, c-format
+msgid "Existing key in file `%s' failed format check, creating new key.\n"
+msgstr ""
+
+#: src/applications/chat/lib/messaging.c:399
+msgid "Creating new key for this nickname (this may take a while).\n"
+msgstr ""
+
+#: src/applications/chat/lib/messaging.c:411
+msgid "Done creating key.\n"
+msgstr ""
+
+#: src/applications/dstore_mysql/dstore_mysql.c:471
+msgid "Failed to initialize MySQL database connection for dstore.\n"
+msgstr ""
+
+#: src/applications/dstore_mysql/dstore_mysql.c:494
+#: src/applications/dstore_sqlite/dstore.c:636
+msgid "# bytes in dstore"
+msgstr ""
+
+#: src/applications/dstore_mysql/dstore_mysql.c:496
+#: src/applications/dstore_sqlite/dstore.c:638
+msgid "# max bytes allowed in dstore"
+msgstr ""
+
+#: src/applications/transport/transport.c:191
+#, c-format
+msgid ""
+"Converting peer address to string failed, transport type %d not supported\n"
+msgstr ""
+
+#: src/applications/transport/transport.c:246
+#, c-format
+msgid "Transport connection attempt failed, transport type %d not supported\n"
+msgstr ""
+
+#: src/applications/transport/transport.c:299
+#, c-format
+msgid ""
+"Transport failed to connect to peer `%s' (%u HELLOs known, none worked)\n"
+msgstr ""
+
+#: src/applications/transport/transport.c:376
+#, c-format
+msgid "Transmission attempt failed, transport type %d unknown.\n"
+msgstr ""
+
+#: src/applications/transport/transport.c:500
+#, c-format
+msgid "No transport of type %d known.\n"
+msgstr ""
+
+#: src/applications/transport/transport.c:560
+msgid "No transport succeeded in creating a hello!\n"
+msgstr ""
+
+#: src/applications/transport/transport.c:761
+#, c-format
+msgid "Loading transports `%s'\n"
+msgstr ""
+
+#: src/applications/transport/transport.c:781
+#, c-format
+msgid "Could not load transport plugin `%s'\n"
+msgstr ""
+
+#: src/applications/transport/transport.c:795
+#, c-format
+msgid "Transport library `%s' did not provide required function '%s%s'.\n"
+msgstr ""
+
+#: src/applications/transport/transport.c:824
+#, c-format
+msgid "Loaded transport `%s'\n"
+msgstr ""
+
+#: src/applications/transport/transport.c:836
+#: src/server/gnunet-peer-info.c:252
+#, c-format
+msgid "I am peer `%s'.\n"
+msgstr ""
+
+#: src/applications/dht/tools/dht_multipeer_test.c:80
+#: src/applications/dht/tools/dht_twopeer_test.c:47
+#: src/applications/dht/module/table.c:783
+msgid "# dht connections"
+msgstr ""
+
+#: src/applications/dht/tools/dht-query.c:54
+msgid "Query (get KEY, put KEY VALUE) DHT table."
+msgstr ""
+
+#: src/applications/dht/tools/dht-query.c:58
+msgid "allow TIME ms to process a GET command"
+msgstr ""
+
+#: src/applications/dht/tools/dht-query.c:107
+#, c-format
+msgid "Issuing `%s(%s,%s)' command.\n"
+msgstr ""
+
+#: src/applications/dht/tools/dht-query.c:142
+#: src/applications/fs/tools/gnunet-auto-share.c:669
+#, c-format
+msgid "Failed to connect to gnunetd.\n"
+msgstr ""
+
+#: src/applications/dht/tools/dht-query.c:155
+#, c-format
+msgid "Command `%s' requires an argument (`%s').\n"
+msgstr ""
+
+#: src/applications/dht/tools/dht-query.c:172
+#, c-format
+msgid "Command `%s' requires two arguments (`%s' and `%s').\n"
+msgstr ""
+
+#: src/applications/dht/tools/dht-query.c:183
+#, c-format
+msgid "Unsupported command `%s'. Aborting.\n"
+msgstr ""
+
+#: src/applications/dht/module/table.c:785
+msgid "# dht discovery messages received"
+msgstr ""
+
+#: src/applications/dht/module/table.c:787
+msgid "# dht route host lookups performed"
+msgstr ""
+
+#: src/applications/dht/module/table.c:789
+msgid "# dht discovery messages sent"
+msgstr ""
+
+#: src/applications/dht/module/routing.c:879
+msgid "# dht replies routed"
+msgstr ""
+
+#: src/applications/dht/module/routing.c:881
+msgid "# dht requests routed"
+msgstr ""
+
+#: src/applications/dht/module/routing.c:883
+msgid "# dht get requests received"
+msgstr ""
+
+#: src/applications/dht/module/routing.c:885
+msgid "# dht put requests received"
+msgstr ""
+
+#: src/applications/dht/module/routing.c:887
+msgid "# dht results received"
+msgstr ""
+
+#: src/applications/dht/module/routing.c:892
+#, c-format
+msgid "`%s' registering p2p handlers: %d %d %d\n"
+msgstr ""
+
+#: src/applications/dht/module/cs.c:122
+#, c-format
+msgid "`%s' failed. Terminating connection to client.\n"
+msgstr ""
+
+#: src/applications/dht/module/cs.c:250
+#, c-format
+msgid "`%s' registering client handlers: %d %d\n"
+msgstr ""
+
+#: src/applications/dht/module/cs.c:273
+msgid "Enables efficient non-anonymous routing"
+msgstr ""
+
+#: src/applications/identity/hostkey.c:155
+#, c-format
+msgid ""
+"Existing hostkey in file `%s' failed format check, creating new hostkey.\n"
+msgstr ""
+
+#: src/applications/identity/hostkey.c:164
+msgid "Creating new hostkey (this may take a while).\n"
+msgstr ""
+
+#: src/applications/identity/hostkey.c:176
+msgid "Done creating hostkey.\n"
+msgstr ""
+
+#: src/applications/identity/identity.c:333
+#, c-format
+msgid ""
+"File `%s' in directory `%s' does not match naming convention. Removed.\n"
+msgstr ""
+
+#: src/applications/identity/identity.c:408
+#, c-format
+msgid "Still no peers found in `%s'!\n"
+msgstr ""
+
+#: src/applications/identity/identity.c:731
+#: src/applications/identity/identity.c:757
+#, c-format
+msgid "Removed file `%s' containing invalid HELLO data.\n"
+msgstr ""
+
+#: src/applications/identity/identity.c:809
+#, c-format
+msgid "Signature failed verification: peer `%s' not known.\n"
+msgstr ""
+
+#: src/applications/identity/identity.c:819
+msgid "Signature failed verification: signature invalid.\n"
+msgstr ""
+
+#: src/applications/identity/identity.c:935
+#: src/applications/identity/identity.c:1058
+#, c-format
+msgid "Peer `%s' is currently strictly blacklisted (for another %llums).\n"
+msgstr ""
+
+#: src/applications/identity/identity.c:1061
+#, c-format
+msgid "Peer `%s' is currently blacklisted (for another %llums).\n"
+msgstr ""
+
+#: src/applications/pingpong/pingpong.c:134
+#: src/applications/pingpong/pingpong.c:203
+#: src/applications/pingpong/pingpong.c:273
+#: src/applications/pingpong/pingpong.c:345
+#, c-format
+msgid "Received malformed `%s' message. Dropping.\n"
+msgstr ""
+
+#: src/applications/pingpong/pingpong.c:146
+msgid "Received ping for another peer. Dropping.\n"
+msgstr ""
+
+#: src/applications/pingpong/pingpong.c:215
+#, c-format
+msgid "Received PING from `%s' not destined for us!\n"
+msgstr ""
+
+#: src/applications/pingpong/pingpong.c:315
+#: src/applications/pingpong/pingpong.c:381
+msgid ""
+"Could not match PONG against any PING. Try increasing MAX_PING_PONG "
+"constant.\n"
+msgstr ""
+
+#: src/applications/pingpong/pingpong.c:425
+msgid "Cannot create PING, table full. Try increasing MAX_PING_PONG.\n"
+msgstr ""
+
+#: src/applications/pingpong/pingpong.c:518
+msgid "# encrypted PONG messages received"
+msgstr ""
+
+#: src/applications/pingpong/pingpong.c:520
+msgid "# plaintext PONG messages received"
+msgstr ""
+
+#: src/applications/pingpong/pingpong.c:522
+msgid "# encrypted PING messages received"
+msgstr ""
+
+#: src/applications/pingpong/pingpong.c:524
+msgid "# PING messages created"
+msgstr ""
+
+#: src/applications/pingpong/pingpong.c:526
+#: src/applications/session/connect.c:926
+msgid "# encrypted PONG messages sent"
+msgstr ""
+
+#: src/applications/pingpong/pingpong.c:530
+#: src/applications/session/connect.c:924
+msgid "# encrypted PING messages sent"
+msgstr ""
+
+#: src/applications/pingpong/pingpong.c:532
+msgid "# plaintext PONG messages sent"
+msgstr ""
+
+#: src/applications/pingpong/pingpong.c:536
+msgid "# plaintext PONG transmissions failed"
+msgstr ""
+
+#: src/applications/pingpong/pingpong.c:546
+#, c-format
+msgid "`%s' registering handlers %d %d (plaintext and ciphertext)\n"
+msgstr ""
+
+#: src/applications/hostlist/hostlist.c:165
+msgid "# hostlist requests received"
+msgstr ""
+
+#: src/applications/hostlist/hostlist.c:167
+msgid "# hostlist HELLOs returned"
+msgstr ""
+
+#: src/applications/hostlist/hostlist.c:169
+msgid "# hostlist bytes returned"
+msgstr ""
+
+#: src/applications/hostlist/hostlist.c:199
+msgid "integrated HTTP hostlist server"
+msgstr ""
+
+#: src/applications/session/connect.c:238
+#, c-format
+msgid "Session key from peer `%s' could not be verified.\n"
+msgstr ""
+
+#: src/applications/session/connect.c:282
+#, c-format
+msgid "Cannot encrypt sessionkey, peer `%s' not known!\n"
+msgstr ""
+
+#: src/applications/session/connect.c:489
+#, c-format
+msgid "Could not create any HELLO for myself (have transports `%s')!\n"
+msgstr ""
+
+#: src/applications/session/connect.c:599
+#, c-format
+msgid "Session key received from peer `%s' has invalid format (discarded).\n"
+msgstr ""
+
+#: src/applications/session/connect.c:632
+#, c-format
+msgid "Session key received from peer `%s' is for `%s' and not for me!\n"
+msgstr ""
+
+#: src/applications/session/connect.c:659
+#, c-format
+msgid "Invalid `%s' message received from peer `%s'.\n"
+msgstr ""
+
+#: src/applications/session/connect.c:670
+#, c-format
+msgid "setkey `%s' from `%s' fails CRC check (have: %u, want %u).\n"
+msgstr ""
+
+#: src/applications/session/connect.c:728
+#, c-format
+msgid ""
+"Error parsing encrypted session key from `%s', given message part size is "
+"invalid.\n"
+msgstr ""
+
+#: src/applications/session/connect.c:741
+#, c-format
+msgid "Unknown type in embedded message from `%s': %u (size: %u)\n"
+msgstr ""
+
+#: src/applications/session/connect.c:916
+msgid "# session keys sent"
+msgstr ""
+
+#: src/applications/session/connect.c:918
+msgid "# session keys rejected"
+msgstr ""
+
+#: src/applications/session/connect.c:920
+msgid "# session keys accepted"
+msgstr ""
+
+#: src/applications/session/connect.c:922
+msgid "# sessions established"
+msgstr ""
+
+#: src/applications/fs/tools/gnunet-pseudonym.c:70
+#: src/applications/fs/tools/gnunet-auto-share.c:199
+#: src/applications/fs/tools/gnunet-insert.c:246
+#: src/applications/fs/tools/gnunet-search.c:125
+#: src/applications/fs/tools/gnunet-download.c:77
+msgid "set the desired LEVEL of sender-anonymity"
+msgstr ""
+
+#: src/applications/fs/tools/gnunet-pseudonym.c:73
+msgid "automate creation of a namespace by starting a collection"
+msgstr ""
+
+#: src/applications/fs/tools/gnunet-pseudonym.c:77
+msgid "create a new pseudonym under the given NICKNAME"
+msgstr ""
+
+#: src/applications/fs/tools/gnunet-pseudonym.c:80
+msgid "delete the pseudonym with the given NICKNAME"
+msgstr ""
+
+#: src/applications/fs/tools/gnunet-pseudonym.c:83
+msgid "end automated building of a namespace (ends collection)"
+msgstr ""
+
+#: src/applications/fs/tools/gnunet-pseudonym.c:85
+msgid "Create new pseudonyms, delete pseudonyms or list existing pseudonyms."
+msgstr ""
+
+#: src/applications/fs/tools/gnunet-pseudonym.c:89
+msgid ""
+"use the given keyword to advertise the namespace (use when creating a new "
+"pseudonym)"
+msgstr ""
+
+#: src/applications/fs/tools/gnunet-pseudonym.c:92
+msgid "specify metadata describing the namespace or collection"
+msgstr ""
+
+#: src/applications/fs/tools/gnunet-pseudonym.c:96
+msgid ""
+"do not generate an advertisement for this namespace (use when creating a new "
+"pseudonym)"
+msgstr ""
+
+#: src/applications/fs/tools/gnunet-pseudonym.c:99
+msgid "do not list the pseudonyms from the pseudonym database"
+msgstr ""
+
+#: src/applications/fs/tools/gnunet-pseudonym.c:103
+msgid ""
+"specify IDENTIFIER to be the address of the entrypoint to content in the "
+"namespace (use when creating a new pseudonym)"
+msgstr ""
+
+#: src/applications/fs/tools/gnunet-pseudonym.c:106
+msgid "set the rating of a namespace"
+msgstr ""
+
+#: src/applications/fs/tools/gnunet-pseudonym.c:141
+#, c-format
+msgid "Namespace `%s' has rating %d.\n"
+msgstr ""
+
+#: src/applications/fs/tools/gnunet-pseudonym.c:143
+#, c-format
+msgid "Namespace `%s' (%s) has rating %d.\n"
+msgstr ""
+
+#: src/applications/fs/tools/gnunet-pseudonym.c:175
+#, c-format
+msgid "\tRating (after update): %d\n"
+msgstr ""
+
+#: src/applications/fs/tools/gnunet-pseudonym.c:179
+#: src/applications/fs/tools/gnunet-pseudonym.c:241
+#: src/applications/fs/tools/gnunet-insert.c:101
+#, c-format
+msgid "\tUnknown namespace `%s'\n"
+msgstr ""
+
+#: src/applications/fs/tools/gnunet-pseudonym.c:217
+#, c-format
+msgid "Collection stopped.\n"
+msgstr ""
+
+#: src/applications/fs/tools/gnunet-pseudonym.c:219
+#, c-format
+msgid "Failed to stop collection (not active?).\n"
+msgstr ""
+
+#: src/applications/fs/tools/gnunet-pseudonym.c:230
+#, c-format
+msgid "Pseudonym `%s' deleted.\n"
+msgstr ""
+
+#: src/applications/fs/tools/gnunet-pseudonym.c:235
+#, c-format
+msgid "Error deleting pseudonym `%s' (does not exist?).\n"
+msgstr ""
+
+#: src/applications/fs/tools/gnunet-pseudonym.c:256
+msgid "Started collection.\n"
+msgstr ""
+
+#: src/applications/fs/tools/gnunet-pseudonym.c:260
+msgid "Failed to start collection.\n"
+msgstr ""
+
+#: src/applications/fs/tools/gnunet-pseudonym.c:296
+msgid "Could not create namespace.\n"
+msgstr ""
+
+#: src/applications/fs/tools/gnunet-pseudonym.c:304
+#, c-format
+msgid "Namespace `%s' created (root: %s).\n"
+msgstr ""
+
+#: src/applications/fs/tools/gnunet-pseudonym.c:321
+#, c-format
+msgid "You must specify a name for the collection (`%s' option).\n"
+msgstr ""
+
+#: src/applications/fs/tools/gnunet-pseudonym.c:329
+#, c-format
+msgid "Could not access namespace information.\n"
+msgstr ""
+
+#: src/applications/fs/tools/gnunet-directory.c:84
+#, c-format
+msgid "==> Directory `%s':\n"
+msgstr ""
+
+#: src/applications/fs/tools/gnunet-directory.c:88
+#, c-format
+msgid "=\tError reading directory.\n"
+msgstr ""
+
+#: src/applications/fs/tools/gnunet-directory.c:118
+#, c-format
+msgid "File format error (not a GNUnet directory?)\n"
+msgstr ""
+
+#: src/applications/fs/tools/gnunet-directory.c:120
+#, c-format
+msgid "%d files found in directory.\n"
+msgstr ""
+
+#: src/applications/fs/tools/gnunet-directory.c:135
+msgid "Perform directory related operations."
+msgstr ""
+
+#: src/applications/fs/tools/gnunet-directory.c:138
+msgid "remove all entries from the directory database and stop tracking URIs"
+msgstr ""
+
+#: src/applications/fs/tools/gnunet-directory.c:142
+msgid "list entries from the directory database"
+msgstr ""
+
+#: src/applications/fs/tools/gnunet-directory.c:145
+msgid "start tracking entries for the directory database"
+msgstr ""
+
+#: src/applications/fs/tools/gnunet-directory.c:168
+#, c-format
+msgid "Listed %d matching entries.\n"
+msgstr ""
+
+#: src/applications/fs/tools/gnunet-auto-share.c:117
+#, c-format
+msgid "Upload of `%s' at %llu out of %llu bytes.\n"
+msgstr ""
+
+#: src/applications/fs/tools/gnunet-auto-share.c:130
+#, c-format
+msgid "Upload of `%s' complete, URI is `%s'.\n"
+msgstr ""
+
+#: src/applications/fs/tools/gnunet-auto-share.c:139
+#, c-format
+msgid "Upload aborted.\n"
+msgstr ""
+
+#: src/applications/fs/tools/gnunet-auto-share.c:145
+#, c-format
+msgid "Error uploading file: %s\n"
+msgstr ""
+
+#: src/applications/fs/tools/gnunet-auto-share.c:154
+#, c-format
+msgid "Starting upload of `%s'.\n"
+msgstr ""
+
+#: src/applications/fs/tools/gnunet-auto-share.c:164
+#, c-format
+msgid "Uploading suspended.\n"
+msgstr ""
+
+#: src/applications/fs/tools/gnunet-auto-share.c:179
+#, c-format
+msgid "Uploading `%s' resumed.\n"
+msgstr ""
+
+#: src/applications/fs/tools/gnunet-auto-share.c:186
+#, c-format
+msgid "Unexpected event: %d\n"
+msgstr ""
+
+#: src/applications/fs/tools/gnunet-auto-share.c:205
+msgid ""
+"run in debug mode; gnunet-auto-share will not daemonize and error messages "
+"will be written to stderr instead of a logfile"
+msgstr ""
+
+#: src/applications/fs/tools/gnunet-auto-share.c:211
+#: src/applications/fs/tools/gnunet-insert.c:259
+msgid ""
+"do not use libextractor to add additional references to directory entries "
+"and/or the published file"
+msgstr ""
+
+#: src/applications/fs/tools/gnunet-auto-share.c:213
+msgid "Automatically share a directory."
+msgstr ""
+
+#: src/applications/fs/tools/gnunet-auto-share.c:216
+#: src/applications/fs/tools/gnunet-insert.c:273
+msgid ""
+"add an additional keyword for all files and directories (this option can be "
+"specified multiple times)"
+msgstr ""
+
+#: src/applications/fs/tools/gnunet-auto-share.c:221
+#: src/applications/fs/tools/gnunet-insert.c:290
+msgid "specify the priority of the content"
+msgstr ""
+
+#: src/applications/fs/tools/gnunet-auto-share.c:468
+#: src/applications/fs/tools/gnunet-auto-share.c:903
+#, c-format
+msgid "Could not access `%s': %s\n"
+msgstr ""
+
+#: src/applications/fs/tools/gnunet-auto-share.c:547
+#, c-format
+msgid "Unknown keyword type `%s' in metadata configuration\n"
+msgstr ""
+
+#: src/applications/fs/tools/gnunet-auto-share.c:652
+#, c-format
+msgid "Failed to stop running gnunet-auto-share.\n"
+msgstr ""
+
+#: src/applications/fs/tools/gnunet-auto-share.c:918
+#, c-format
+msgid "Directory `%s' is already on the list of shared directories.\n"
+msgstr ""
+
+#: src/applications/fs/tools/gnunet-auto-share.c:939
+msgid ""
+"The specified directories were added to the list of shared directories.\n"
+msgstr ""
+
+#: src/applications/fs/tools/gnunet-auto-share.c:961
+#, c-format
+msgid "Could not open logfile `%s': %s\n"
+msgstr ""
+
+#: src/applications/fs/tools/gnunet-insert.c:115
+#, c-format
+msgid "Created entry `%s' in namespace `%s'\n"
+msgstr ""
+
+#: src/applications/fs/tools/gnunet-insert.c:120
+#, c-format
+msgid "Failed to add entry to namespace `%s' (does it exist?)\n"
+msgstr ""
+
+#: src/applications/fs/tools/gnunet-insert.c:135
+#, c-format
+msgid "Keywords for file `%s':\n"
+msgstr ""
+
+#: src/applications/fs/tools/gnunet-insert.c:144
+msgid "filename"
+msgstr ""
+
+#: src/applications/fs/tools/gnunet-insert.c:146
+msgid "mimetype"
+msgstr ""
+
+#: src/applications/fs/tools/gnunet-insert.c:186
+#, c-format
+msgid "%16llu of %16llu bytes inserted (estimating %6s to completion) - %s\n"
+msgstr ""
+
+#: src/applications/fs/tools/gnunet-insert.c:198
+#, c-format
+msgid "Upload of `%s' complete, %llu bytes took %llu seconds (%8.3f KiB/s).\n"
+msgstr ""
+
+#: src/applications/fs/tools/gnunet-insert.c:209
+#, c-format
+msgid "File `%s' has URI: %s\n"
+msgstr ""
+
+#: src/applications/fs/tools/gnunet-insert.c:220
+#, c-format
+msgid ""
+"\n"
+"Upload aborted.\n"
+msgstr ""
+
+#: src/applications/fs/tools/gnunet-insert.c:225
+#, c-format
+msgid ""
+"\n"
+"Error uploading file: %s"
+msgstr ""
+
+#: src/applications/fs/tools/gnunet-insert.c:234
+#, c-format
+msgid ""
+"\n"
+"Unexpected event: %d\n"
+msgstr ""
+
+#: src/applications/fs/tools/gnunet-insert.c:250
+msgid ""
+"even if gnunetd is running on the local machine, force the creation of a "
+"copy instead of making a link to the GNUnet share directory"
+msgstr ""
+
+#: src/applications/fs/tools/gnunet-insert.c:255
+msgid "disable adding the creation time to the metadata of the uploaded file"
+msgstr ""
+
+#: src/applications/fs/tools/gnunet-insert.c:263
+msgid ""
+"print list of extracted keywords that would be used, but do not perform "
+"upload"
+msgstr ""
+
+#: src/applications/fs/tools/gnunet-insert.c:265
+msgid "Make files available to GNUnet for sharing."
+msgstr ""
+
+#: src/applications/fs/tools/gnunet-insert.c:269
+msgid ""
+"add an additional keyword for the top-level file or directory (this option "
+"can be specified multiple times)"
+msgstr ""
+
+#: src/applications/fs/tools/gnunet-insert.c:278
+msgid "set the meta-data for the given TYPE to the given VALUE"
+msgstr ""
+
+#: src/applications/fs/tools/gnunet-insert.c:281
+msgid ""
+"do not index, perform full insertion (stores entire file in encrypted form "
+"in GNUnet database)"
+msgstr ""
+
+#: src/applications/fs/tools/gnunet-insert.c:286
+msgid ""
+"specify ID of an updated version to be published in the future (for "
+"namespace insertions only)"
+msgstr ""
+
+#: src/applications/fs/tools/gnunet-insert.c:294
+msgid "publish the files under the pseudonym NAME (place file into namespace)"
+msgstr ""
+
+#: src/applications/fs/tools/gnunet-insert.c:297
+msgid ""
+"only simulte the process but do not do any actual publishing (useful to "
+"compute URIs)"
+msgstr ""
+
+#: src/applications/fs/tools/gnunet-insert.c:301
+msgid ""
+"set the ID of this version of the publication (for namespace insertions only)"
+msgstr ""
+
+#: src/applications/fs/tools/gnunet-insert.c:305
+msgid ""
+"URI to be published (can be used instead of passing a file to add keywords "
+"to the file with the respective URI)"
+msgstr ""
+
+#: src/applications/fs/tools/gnunet-insert.c:342
+#, c-format
+msgid "You must specify one and only one filename for insertion.\n"
+msgstr ""
+
+#: src/applications/fs/tools/gnunet-insert.c:348
+#, c-format
+msgid "You must NOT specify an URI and a filename.\n"
+msgstr ""
+
+#: src/applications/fs/tools/gnunet-insert.c:354
+#, c-format
+msgid "Cannot extract metadata from a URI!\n"
+msgstr ""
+
+#: src/applications/fs/tools/gnunet-insert.c:400
+#, c-format
+msgid "Could not access namespace `%s' (does not exist?).\n"
+msgstr ""
+
+#: src/applications/fs/tools/gnunet-insert.c:408
+#, c-format
+msgid "Option `%s' is required when using option `%s'.\n"
+msgstr ""
+
+#: src/applications/fs/tools/gnunet-insert.c:419
+#: src/applications/fs/tools/gnunet-insert.c:427
+#, c-format
+msgid "Option `%s' makes no sense without option `%s'.\n"
+msgstr ""
+
+#: src/applications/fs/tools/gnunet-search.c:128
+msgid "Search GNUnet for files."
+msgstr ""
+
+#: src/applications/fs/tools/gnunet-search.c:132
+msgid "write encountered (decrypted) search results to FILENAME"
+msgstr ""
+
+#: src/applications/fs/tools/gnunet-search.c:169
+#, c-format
+msgid "Error converting arguments to URI!\n"
+msgstr ""
+
+#: src/applications/fs/tools/gnunet-unindex.c:61
+#, c-format
+msgid ""
+"%16llu of %16llu bytes unindexed (estimating %llu seconds to "
+"completion) "
+msgstr ""
+
+#: src/applications/fs/tools/gnunet-unindex.c:73
+#, c-format
+msgid ""
+"\n"
+"Unindexing of `%s' complete, %llu bytes took %llu seconds (%8.3f KiB/s).\n"
+msgstr ""
+
+#: src/applications/fs/tools/gnunet-unindex.c:88
+#, c-format
+msgid ""
+"\n"
+"Error unindexing file: %s\n"
+msgstr ""
+
+#: src/applications/fs/tools/gnunet-unindex.c:108
+msgid "Unindex files."
+msgstr ""
+
+#: src/applications/fs/tools/gnunet-unindex.c:145
+msgid "Not enough arguments. You must specify a filename.\n"
+msgstr ""
+
+#: src/applications/fs/tools/gnunet-unindex.c:163
+#, c-format
+msgid "`%s' failed. Is `%s' a file?\n"
+msgstr ""
+
+#: src/applications/fs/tools/gnunet-download.c:82
+msgid ""
+"download a GNUnet directory that has already been downloaded. Requires that "
+"a filename of an existing file is specified instead of the URI. The "
+"download will only download the top-level files in the directory unless the "
+"`-R' option is also specified."
+msgstr ""
+
+#: src/applications/fs/tools/gnunet-download.c:85
+msgid "delete incomplete downloads (when aborted with CTRL-C)"
+msgstr ""
+
+#: src/applications/fs/tools/gnunet-download.c:87
+msgid "Download files from GNUnet."
+msgstr ""
+
+#: src/applications/fs/tools/gnunet-download.c:91
+msgid "write the file to FILENAME"
+msgstr ""
+
+#: src/applications/fs/tools/gnunet-download.c:95
+msgid "set the maximum number of parallel downloads that are allowed"
+msgstr ""
+
+#: src/applications/fs/tools/gnunet-download.c:98
+msgid "download a GNUnet directory recursively"
+msgstr ""
+
+#: src/applications/fs/tools/gnunet-download.c:119
+#, c-format
+msgid "Download of file `%s' at %16llu out of %16llu bytes (%8.3f KiB/s)\n"
+msgstr ""
+
+#: src/applications/fs/tools/gnunet-download.c:133
+#, c-format
+msgid "Download aborted.\n"
+msgstr ""
+
+#: src/applications/fs/tools/gnunet-download.c:139
+#, c-format
+msgid "Error downloading: %s\n"
+msgstr ""
+
+#: src/applications/fs/tools/gnunet-download.c:145
+#, c-format
+msgid "Download of file `%s' complete. Speed was %8.3f KiB per second.\n"
+msgstr ""
+
+#: src/applications/fs/tools/gnunet-download.c:191
+msgid "no name given"
+msgstr ""
+
+#: src/applications/fs/tools/gnunet-download.c:197
+#, c-format
+msgid "Starting download `%s'\n"
+msgstr ""
+
+#: src/applications/fs/tools/gnunet-download.c:239
+msgid "Not enough arguments. You must specify a GNUnet file URI\n"
+msgstr ""
+
+#: src/applications/fs/tools/gnunet-download.c:257
+#, c-format
+msgid "URI `%s' invalid for gnunet-download.\n"
+msgstr ""
+
+#: src/applications/fs/tools/gnunet-download.c:300
+#, c-format
+msgid "No filename specified, using `%s' instead (for now).\n"
+msgstr ""
+
+#: src/applications/fs/tools/gnunet-download.c:342
+#, c-format
+msgid "Could not access gnunet-directory file `%s'\n"
+msgstr ""
+
+#: src/applications/fs/tools/gnunet-download.c:363
+#, c-format
+msgid "Downloading %d files from directory `%s'.\n"
+msgstr ""
+
+#: src/applications/fs/tools/gnunet-download.c:366
+#, c-format
+msgid "Did not find any files in directory `%s'\n"
+msgstr ""
+
+#: src/applications/fs/tools/gnunet-download.c:404
+#, c-format
+msgid "File stored as `%s'.\n"
+msgstr ""
+
+#: src/applications/fs/uritrack/file_info.c:98
+msgid "Collecting file identifiers disabled.\n"
+msgstr ""
+
+#: src/applications/fs/uritrack/file_info.c:377
+#, c-format
+msgid "Deleted corrupt URI database in `%s'."
+msgstr ""
+
+#: src/applications/fs/ecrs/upload.c:158
+#, c-format
+msgid "`%s' is not a file.\n"
+msgstr ""
+
+#: src/applications/fs/ecrs/upload.c:166
+#, c-format
+msgid "Cannot get size of file `%s'"
+msgstr ""
+
+#: src/applications/fs/ecrs/upload.c:175
+msgid "Failed to connect to gnunetd."
+msgstr ""
+
+#: src/applications/fs/ecrs/upload.c:187
+#, c-format
+msgid "Cannot hash `%s'.\n"
+msgstr ""
+
+#: src/applications/fs/ecrs/upload.c:215
+#, c-format
+msgid "Initialization for indexing file `%s' failed.\n"
+msgstr ""
+
+#: src/applications/fs/ecrs/upload.c:223
+#, c-format
+msgid "Indexing file `%s' failed. Suggestion: try to insert the file.\n"
+msgstr ""
+
+#: src/applications/fs/ecrs/upload.c:237
+#, c-format
+msgid "Cannot open file `%s': `%s'"
+msgstr ""
+
+#: src/applications/fs/ecrs/upload.c:322
+#, c-format
+msgid "Indexing data of file `%s' failed at position %llu.\n"
+msgstr ""
+
+#: src/applications/fs/ecrs/helper.c:91
+msgid "No keywords specified!\n"
+msgstr ""
+
+#: src/applications/fs/ecrs/helper.c:99
+msgid "Number of double-quotes not balanced!\n"
+msgstr ""
+
+#: src/applications/fs/ecrs/helper.c:398
+#, c-format
+msgid "Renaming of file `%s' to `%s' failed: %s\n"
+msgstr ""
+
+#: src/applications/fs/ecrs/helper.c:408
+#, c-format
+msgid "Could not rename file `%s' to `%s': file exists\n"
+msgstr ""
+
+#: src/applications/fs/ecrs/parser.c:165
+#, c-format
+msgid ""
+"Unknown metadata type in metadata option `%s'. Using metadata type "
+"`unknown' instead.\n"
+msgstr ""
+
+#: src/applications/fs/ecrs/search.c:152
+msgid "CHK URI not allowed for search.\n"
+msgstr ""
+
+#: src/applications/fs/ecrs/search.c:207
+msgid "LOC URI not allowed for search.\n"
+msgstr ""
+
+#: src/applications/fs/ecrs/namespace.c:365
+#, c-format
+msgid "File `%s' does not contain a pseudonym.\n"
+msgstr ""
+
+#: src/applications/fs/ecrs/namespace.c:376
+#, c-format
+msgid "Format of pseudonym `%s' is invalid.\n"
+msgstr ""
+
+#: src/applications/fs/ecrs/namespace.c:535
+#: src/applications/fs/ecrs/namespace.c:547
+#: src/applications/fs/ecrs/namespace.c:559
+#, c-format
+msgid "Format of file `%s' is invalid, trying to remove.\n"
+msgstr ""
+
+#: src/applications/fs/ecrs/download.c:599
+msgid ""
+"Decrypted content does not match key. This is either a bug or a maliciously "
+"inserted file. Download aborted.\n"
+msgstr ""
+
+#: src/applications/fs/ecrs/download.c:609
+msgid "IO error."
+msgstr ""
+
+#: src/applications/fs/collection/collection.c:559
+#: src/applications/fs/collection/collection.c:562
+#, c-format
+msgid "Revision %u"
+msgstr ""
+
+#: src/applications/fs/fsui/upload.c:330
+msgid "Application aborted."
+msgstr ""
+
+#: src/applications/fs/fsui/upload.c:344
+msgid "Failed to create temporary directory."
+msgstr ""
+
+#: src/applications/fs/fsui/deserialize.c:927
+#, c-format
+msgid "FSUI state file `%s' had syntax error at offset %u.\n"
+msgstr ""
+
+#: src/applications/fs/fsui/unindex.c:114
+msgid "Unindexing failed (no reason given)"
+msgstr ""
+
+#: src/applications/fs/gap/plan.c:944
+msgid "# gap requests total sent"
+msgstr ""
+
+#: src/applications/fs/gap/plan.c:946
+msgid "# gap content total planned"
+msgstr ""
+
+#: src/applications/fs/gap/plan.c:948
+msgid "# gap routes succeeded"
+msgstr ""
+
+#: src/applications/fs/gap/plan.c:949
+msgid "# trust spent"
+msgstr ""
+
+#: src/applications/fs/gap/fs.c:157
+msgid "Datastore full.\n"
+msgstr ""
+
+#: src/applications/fs/gap/fs.c:831
+msgid "# gap requests total received"
+msgstr ""
+
+#: src/applications/fs/gap/fs.c:833
+msgid "# gap requests dropped due to load"
+msgstr ""
+
+#: src/applications/fs/gap/fs.c:835
+msgid "# gap content total received"
+msgstr ""
+
+#: src/applications/fs/gap/fs.c:837
+msgid "# gap total trust awarded"
+msgstr ""
+
+#: src/applications/fs/gap/fs.c:865
+#, c-format
+msgid ""
+"`%s' registering client handlers %d %d %d %d %d %d %d %d and P2P handlers %d "
+"%d\n"
+msgstr ""
+
+#: src/applications/fs/gap/fs.c:921
+msgid "enables (anonymous) file-sharing"
+msgstr ""
+
+#: src/applications/fs/gap/ondemand.c:173
+#, c-format
+msgid ""
+"Because the file `%s' has been unavailable for 3 days it got removed from "
+"your share. Please unindex files before deleting them as the index now "
+"contains invalid references!\n"
+msgstr ""
+
+#: src/applications/fs/gap/ondemand.c:451
+msgid "Indexed content changed (does not match its hash).\n"
+msgstr ""
+
+#: src/applications/fs/gap/ondemand.c:569
+#, c-format
+msgid ""
+"Unindexed ODB block `%s' from offset %llu already missing from datastore.\n"
+msgstr ""
+
+#: src/applications/fs/gap/pid_table.c:177
+msgid "# distinct interned peer IDs in pid table"
+msgstr ""
+
+#: src/applications/fs/gap/pid_table.c:180
+msgid "# total RC of interned peer IDs in pid table"
+msgstr ""
+
+#: src/applications/fs/gap/querymanager.c:708
+msgid "# gap client queries received"
+msgstr ""
+
+#: src/applications/fs/gap/querymanager.c:710
+msgid "# gap replies sent to clients"
+msgstr ""
+
+#: src/applications/fs/gap/querymanager.c:712
+msgid "# gap client requests tracked"
+msgstr ""
+
+#: src/applications/fs/gap/querymanager.c:714
+msgid "# gap client requests injected"
+msgstr ""
+
+#: src/applications/fs/gap/querymanager.c:717
+msgid "# gap query bloomfilter resizing updates"
+msgstr ""
+
+#: src/applications/fs/gap/migration.c:437
+msgid "# blocks migrated"
+msgstr ""
+
+#: src/applications/fs/gap/migration.c:439
+msgid "# blocks injected for migration"
+msgstr ""
+
+#: src/applications/fs/gap/migration.c:441
+msgid "# blocks fetched for migration"
+msgstr ""
+
+#: src/applications/fs/gap/migration.c:443
+msgid "# on-demand fetches for migration"
+msgstr ""
+
+#: src/applications/fs/gap/gap.c:694
+msgid "# gap queries dropped (table full)"
+msgstr ""
+
+#: src/applications/fs/gap/gap.c:696
+msgid "# gap queries dropped (redundant)"
+msgstr ""
+
+#: src/applications/fs/gap/gap.c:698
+msgid "# gap queries routed"
+msgstr ""
+
+#: src/applications/fs/gap/gap.c:700
+msgid "# gap content found locally"
+msgstr ""
+
+#: src/applications/fs/gap/gap.c:703
+msgid "# gap queries refreshed existing record"
+msgstr ""
+
+#: src/applications/fs/gap/gap.c:704
+msgid "# trust earned"
+msgstr ""
+
+#: src/applications/fs/gap/fs_dht.c:256
+msgid "# blocks pushed into DHT"
+msgstr ""
+
+#: src/applications/fs/gap/anonymity.c:56
+msgid "Failed to get traffic stats.\n"
+msgstr ""
+
+#: src/applications/testing/remote.c:68
+#, c-format
+msgid "scp command is : %s \n"
+msgstr ""
+
+#: src/applications/testing/remote.c:491
+#, c-format
+msgid "Friend list of %s:%d\n"
+msgstr ""
+
+#: src/applications/testing/remote.c:513
+#, c-format
+msgid "scp command for friend file copy is : %s \n"
+msgstr ""
+
+#: src/applications/testing/remote.c:535
+#, c-format
+msgid "connecting peer %s:%d to peer %s:%d\n"
+msgstr ""
+
+#: src/applications/testing/remotetest.c:38
+msgid "Set up multiple gnunetd daemons across multiple hosts."
+msgstr ""
+
+#: src/applications/testing/remotetest.c:43
+msgid "set number of daemons to start"
+msgstr ""
+
+#: src/applications/testing/testing.c:268
+#: src/applications/testing/remotetopologies.c:367
+#, c-format
+msgid "Waiting for peers to connect"
+msgstr ""
+
+#: src/applications/testing/remotetopologies.c:213
+#, c-format
+msgid "Connecting nodes in 2d torus topology: %u rows %u columns\n"
+msgstr ""
+
+#: src/applications/testing/remotetopologies.c:491
+#, c-format
+msgid "Failed to establish connection with peers.\n"
+msgstr ""
+
+#: src/applications/bootstrap_http/http.c:113
+#, c-format
+msgid "Bootstrap data obtained from `%s' is invalid.\n"
+msgstr ""
+
+#: src/applications/bootstrap_http/http.c:126
+#: src/applications/bootstrap_http/http.c:277
+#: src/applications/bootstrap_http/http.c:294
+#: src/applications/bootstrap_http/http.c:333
+#: src/applications/bootstrap_http/http.c:352
+#: src/applications/bootstrap_http/http.c:365
+#: src/applications/bootstrap_http/http.c:375
+#: src/applications/bootstrap_http/http.c:385 src/transports/upnp/upnp.c:356
+#: src/transports/upnp/upnp.c:541 src/transports/http.c:1085
+#: src/transports/http.c:1209 src/transports/http.c:1377
+#: src/transports/http.c:1777 src/transports/http.c:1827
+#, c-format
+msgid "%s failed at %s:%d: `%s'\n"
+msgstr ""
+
+#: src/applications/bootstrap_http/http.c:185
+msgid "No hostlist URL specified in configuration, will not bootstrap.\n"
+msgstr ""
+
+#: src/applications/bootstrap_http/http.c:226
+#, c-format
+msgid "Bootstrapping using `%s'.\n"
+msgstr ""
+
+#: src/applications/bootstrap_http/http.c:254
+#, c-format
+msgid "Trying to download hostlist from `%s'\n"
+msgstr ""
+
+#: src/applications/bootstrap_http/http.c:391
+#, c-format
+msgid "Downloaded %llu bytes from `%s'.\n"
+msgstr ""
+
+#: src/applications/bootstrap_http/http.c:425
+msgid "# HELLOs downloaded via http"
+msgstr ""
+
+#: src/applications/getoption/getoption.c:78
+#, c-format
+msgid "`%s' registering client handler %d\n"
+msgstr ""
+
+#: src/applications/getoption/getoption.c:88
+msgid "allows clients to determine gnunetd's configuration"
+msgstr ""
+
+#: src/applications/template/template.c:70
+#, c-format
+msgid "`%s' registering client handler %d and %d\n"
+msgstr ""
+
+#: src/applications/template/gnunet-template.c:42
+msgid "Template description."
+msgstr ""
+
+#: src/applications/stats/clientapi.c:331
+msgid "Uptime (seconds)"
+msgstr ""
+
+#: src/applications/stats/sqstats.c:151
+msgid "# Any-Blocks"
+msgstr ""
+
+#: src/applications/stats/sqstats.c:152
+msgid "# DBlocks"
+msgstr ""
+
+#: src/applications/stats/sqstats.c:153
+msgid "# SBlocks"
+msgstr ""
+
+#: src/applications/stats/sqstats.c:154
+msgid "# KBlocks"
+msgstr ""
+
+#: src/applications/stats/sqstats.c:155
+msgid "# NBlocks"
+msgstr ""
+
+#: src/applications/stats/sqstats.c:156
+msgid "# KNBlocks"
+msgstr ""
+
+#: src/applications/stats/sqstats.c:157
+msgid "# OnDemand-Blocks"
+msgstr ""
+
+#: src/applications/stats/sqstats.c:158
+msgid "# Unknown-Blocks"
+msgstr ""
+
+#: src/applications/stats/sqstats.c:159
+msgid "# expired"
+msgstr ""
+
+#: src/applications/stats/sqstats.c:160
+msgid "# expire in 1h"
+msgstr ""
+
+#: src/applications/stats/sqstats.c:161
+msgid "# expire in 24h"
+msgstr ""
+
+#: src/applications/stats/sqstats.c:162
+msgid "# expire in 1 week"
+msgstr ""
+
+#: src/applications/stats/sqstats.c:163
+msgid "# expire in 1 month"
+msgstr ""
+
+#: src/applications/stats/sqstats.c:164
+msgid "# zero priority"
+msgstr ""
+
+#: src/applications/stats/sqstats.c:165
+msgid "# priority one"
+msgstr ""
+
+#: src/applications/stats/sqstats.c:166
+msgid "# priority larger than one"
+msgstr ""
+
+#: src/applications/stats/sqstats.c:167
+msgid "# no anonymity"
+msgstr ""
+
+#: src/applications/stats/sqstats.c:168
+msgid "# anonymity one"
+msgstr ""
+
+#: src/applications/stats/sqstats.c:169
+msgid "# anonymity larger than one"
+msgstr ""
+
+#: src/applications/stats/statistics.c:238
+#, no-c-format
+msgid "% of allowed network load (up)"
+msgstr ""
+
+#: src/applications/stats/statistics.c:240
+#, no-c-format
+msgid "% of allowed network load (down)"
+msgstr ""
+
+#: src/applications/stats/statistics.c:243
+#, no-c-format
+msgid "% of allowed cpu load"
+msgstr ""
+
+#: src/applications/stats/statistics.c:246
+#, no-c-format
+msgid "% of allowed io load"
+msgstr ""
+
+#: src/applications/stats/statistics.c:249
+msgid "# bytes of noise received"
+msgstr ""
+
+#: src/applications/stats/statistics.c:251
+msgid "# plibc handles"
+msgstr ""
+
+#: src/applications/stats/statistics.c:441
+#, c-format
+msgid "`%s' registering client handlers %d %d %d and p2p handler %d\n"
+msgstr ""
+
+#: src/applications/stats/statistics.c:463
+msgid "keeps statistics about gnunetd's operation"
+msgstr ""
+
+#: src/applications/stats/gnunet-stats.c:61
+#, c-format
+msgid "Supported peer-to-peer messages:\n"
+msgstr ""
+
+#: src/applications/stats/gnunet-stats.c:64
+#, c-format
+msgid "Supported client-server messages:\n"
+msgstr ""
+
+#: src/applications/stats/gnunet-stats.c:83
+#: src/applications/vpn/gnunet-vpn.c:59
+msgid "Print statistics about GNUnet operations."
+msgstr ""
+
+#: src/applications/stats/gnunet-stats.c:87
+msgid "prints supported protocol messages"
+msgstr ""
+
+#: src/applications/stats/gnunet-stats.c:136
+#, c-format
+msgid "Error reading information from gnunetd.\n"
+msgstr ""
+
+#: src/applications/vpn/gnunet-vpn.c:63
+msgid "Suppress display of asynchronous log messages"
+msgstr ""
+
+#: src/applications/vpn/p2p.c:75
+msgid "VPN IP src not anonymous. drop..\n"
+msgstr ""
+
+#: src/applications/vpn/p2p.c:83
+msgid "VPN IP not anonymous, drop.\n"
+msgstr ""
+
+#: src/applications/vpn/p2p.c:92
+msgid "VPN Received, not anonymous, drop.\n"
+msgstr ""
+
+#: src/applications/vpn/p2p.c:97
+#, c-format
+msgid "VPN Received unknown IP version %d...\n"
+msgstr ""
+
+#: src/applications/vpn/p2p.c:110
+#, c-format
+msgid "<- GNUnet(%d) : %s\n"
+msgstr ""
+
+#: src/applications/vpn/p2p.c:139
+msgid "Could not write the tunnelled IP to the OS... Did to setup a tunnel?\n"
+msgstr ""
+
+#: src/applications/vpn/p2p.c:183
+msgid "Receive route request\n"
+msgstr ""
+
+#: src/applications/vpn/p2p.c:193
+#, c-format
+msgid "Prepare route announcement level %d\n"
+msgstr ""
+
+#: src/applications/vpn/p2p.c:208
+#, c-format
+msgid "Send route announcement %d with route announce\n"
+msgstr ""
+
+#: src/applications/vpn/p2p.c:217
+#, c-format
+msgid "Send outside table info %d\n"
+msgstr ""
+
+#: src/applications/vpn/p2p.c:239
+msgid "Receive route announce.\n"
+msgstr ""
+
+#: src/applications/vpn/p2p.c:247
+msgid "Going to try insert route into local table.\n"
+msgstr ""
+
+#: src/applications/vpn/p2p.c:256
+#, c-format
+msgid "Inserting with hops %d\n"
+msgstr ""
+
+#: src/applications/vpn/p2p.c:273
+#, c-format
+msgid "Request level %d from peer %d\n"
+msgstr ""
+
+#: src/applications/vpn/p2p.c:300
+#, c-format
+msgid "Receive table limit on peer reached %d\n"
+msgstr ""
+
+#: src/applications/vpn/vpn.c:180
+#, c-format
+msgid "Not storing route to myself from peer %d\n"
+msgstr ""
+
+#: src/applications/vpn/vpn.c:194
+#, c-format
+msgid "Duplicate route to node from peer %d, choosing minimum hops"
+msgstr ""
+
+#: src/applications/vpn/vpn.c:230
+#, c-format
+msgid "Inserting route from peer %d in route table at location %d\n"
+msgstr ""
+
+#: src/applications/vpn/vpn.c:247
+#, c-format
+msgid "RFC4193 Frame length %d is too big for GNUnet!\n"
+msgstr ""
+
+#: src/applications/vpn/vpn.c:254
+#, c-format
+msgid "RFC4193 Frame length %d too small\n"
+msgstr ""
+
+#: src/applications/vpn/vpn.c:273
+#, c-format
+msgid "RFC4193 Ethertype %x and IP version %x do not match!\n"
+msgstr ""
+
+#: src/applications/vpn/vpn.c:289
+#, c-format
+msgid "RFC4193 Going to try and make a tunnel in slot %d\n"
+msgstr ""
+
+#: src/applications/vpn/vpn.c:295
+#, c-format
+msgid "Cannot open tunnel device: %s"
+msgstr ""
+
+#: src/applications/vpn/vpn.c:331
+#, c-format
+msgid "RFC4193 Create skips gnu%d as we are already using it\n"
+msgstr ""
+
+#: src/applications/vpn/vpn.c:346
+#, c-format
+msgid "Cannot set tunnel name to %s because of %s\n"
+msgstr ""
+
+#: src/applications/vpn/vpn.c:356
+#, c-format
+msgid "Configured tunnel name to %s\n"
+msgstr ""
+
+#: src/applications/vpn/vpn.c:398
+#, c-format
+msgid "Cannot get socket flags for gnu%d because %s\n"
+msgstr ""
+
+#: src/applications/vpn/vpn.c:408
+#, c-format
+msgid "Cannot set socket flags for gnu%d because %s\n"
+msgstr ""
+
+#: src/applications/vpn/vpn.c:418
+#, c-format
+msgid "Cannot set MTU for gnu%d because %s\n"
+msgstr ""
+
+#: src/applications/vpn/vpn.c:426
+#, c-format
+msgid "Cannot get interface index for gnu%d because %s\n"
+msgstr ""
+
+#: src/applications/vpn/vpn.c:440
+#, c-format
+msgid "IPv6 ifaddr gnu%d - %x:%x:%x:%x:%x:%x:%x:%x/%d\n"
+msgstr ""
+
+#: src/applications/vpn/vpn.c:455
+#, c-format
+msgid "Cannot set interface IPv6 address for gnu%d because %s\n"
+msgstr ""
+
+#: src/applications/vpn/vpn.c:471
+#, c-format
+msgid "IPv6 route gnu%d - destination %x:%x:%x:%x:%x:%x:%x:%x/%d\n"
+msgstr ""
+
+#: src/applications/vpn/vpn.c:485
+#, c-format
+msgid "Cannot add route IPv6 address for gnu%s because %s\n"
+msgstr ""
+
+#: src/applications/vpn/vpn.c:528
+msgid ""
+"RFC4193 We have run out of memory and so I can't store a tunnel for this "
+"peer.\n"
+msgstr ""
+
+#: src/applications/vpn/vpn.c:579
+#, c-format
+msgid "RFC4193 Thread running (frame %d tunnel %d f2f %d) ...\n"
+msgstr ""
+
+#: src/applications/vpn/vpn.c:661
+#, c-format
+msgid "VPN dropping connection %x\n"
+msgstr ""
+
+#: src/applications/vpn/vpn.c:670
+#, c-format
+msgid "VPN cannot drop connection %x\n"
+msgstr ""
+
+#: src/applications/vpn/vpn.c:690
+msgid "RFC4193 Thread exiting\n"
+msgstr ""
+
+#: src/applications/vpn/vpn.c:712
+msgid "realise alloc ram\n"
+msgstr ""
+
+#: src/applications/vpn/vpn.c:735
+msgid "realise add routes\n"
+msgstr ""
+
+#: src/applications/vpn/vpn.c:849
+msgid "realise copy table\n"
+msgstr ""
+
+#: src/applications/vpn/vpn.c:898
+#, c-format
+msgid "`%s' initialising RFC4913 module %d and %d\n"
+msgstr ""
+
+#: src/applications/vpn/vpn.c:903
+#, c-format
+msgid "RFC4193 my First 4 hex digits of host id are %x\n"
+msgstr ""
+
+#: src/applications/vpn/vpn.c:942
+msgid "enables IPv6 over GNUnet (incomplete)"
+msgstr ""
+
+#: src/applications/vpn/vpn.c:963
+msgid "RFC4193 Waiting for tun thread to end\n"
+msgstr ""
+
+#: src/applications/vpn/vpn.c:978
+msgid "RFC4193 The tun thread has ended\n"
+msgstr ""
+
+#: src/applications/vpn/vpn.c:996
+#, c-format
+msgid "RFC4193 Closing tunnel %d fd %d\n"
+msgstr ""
+
+#: src/server/core.c:119 src/server/core.c:318
+#, c-format
+msgid "Configuration value `%s' under [MODULES] for `%s' is invalid!\n"
+msgstr ""
+
+#: src/server/core.c:140
+#, c-format
+msgid "Application module `%s' already initialized!\n"
+msgstr ""
+
+#: src/server/core.c:194
+#, c-format
+msgid "Failed to load plugin `%s' at %s:%d. Unloading plugin.\n"
+msgstr ""
+
+#: src/server/core.c:244
+#, c-format
+msgid "Could not shutdown `%s': application not loaded\n"
+msgstr ""
+
+#: src/server/core.c:255
+#, c-format
+msgid "Could not shutdown application `%s': not initialized\n"
+msgstr ""
+
+#: src/server/core.c:265
+#, c-format
+msgid "Could not find '%s%s' method in library `%s'.\n"
+msgstr ""
+
+#: src/server/core.c:422
+#, c-format
+msgid "Could not release %p: service not loaded\n"
+msgstr ""
+
+#: src/server/core.c:531
+#, c-format
+msgid "Could not properly shutdown application `%s'.\n"
+msgstr ""
+
+#: src/server/core.c:676
+#, c-format
+msgid "Could not properly unload service `%s'!\n"
+msgstr ""
+
+#: src/server/gnunet-update.c:146
+#, c-format
+msgid "Updating data for module `%s'\n"
+msgstr ""
+
+#: src/server/gnunet-update.c:151
+#, c-format
+msgid "Failed to update data for module `%s'\n"
+msgstr ""
+
+#: src/server/gnunet-update.c:225 src/server/gnunetd.c:124
+msgid "Core initialization failed.\n"
+msgstr ""
+
+#: src/server/gnunet-update.c:270
+msgid "Updates GNUnet datastructures after version change."
+msgstr ""
+
+#: src/server/gnunet-update.c:274 src/server/gnunet-transport-check.c:376
+msgid "run as user LOGIN"
+msgstr ""
+
+#: src/server/gnunet-update.c:278
+msgid "run in client mode (for getting client configuration values)"
+msgstr ""
+
+#: src/server/version.c:125
+msgid ""
+"Failed to determine filename used to store GNUnet version information!\n"
+msgstr ""
+
+#: src/server/gnunetd.c:85
+#, c-format
+msgid "`%s' startup complete.\n"
+msgstr ""
+
+#: src/server/gnunetd.c:89
+#, c-format
+msgid "`%s' is shutting down.\n"
+msgstr ""
+
+#: src/server/gnunetd.c:179
+msgid ""
+"run in debug mode; gnunetd will not daemonize and error messages will be "
+"written to stderr instead of a logfile"
+msgstr ""
+
+#: src/server/gnunetd.c:183
+msgid "Starts the gnunetd daemon."
+msgstr ""
+
+#: src/server/gnunetd.c:186
+msgid "disable padding with random data (experimental)"
+msgstr ""
+
+#: src/server/gnunetd.c:190
+msgid "print all log messages to the console (only works together with -d)"
+msgstr ""
+
+#: src/server/gnunetd.c:194
+msgid "specify username as which gnunetd should run"
+msgstr ""
+
+#: src/server/gnunetd.c:275
+#, c-format
+msgid "Configuration or GNUnet version changed. You need to run `%s'!\n"
+msgstr ""
+
+#: src/server/tcpserver.c:121
+#, c-format
+msgid "The `%s' request received from client is malformed.\n"
+msgstr ""
+
+#: src/server/tcpserver.c:409
+#, c-format
+msgid "`%s' failed for port %d. Is gnunetd already running?\n"
+msgstr ""
+
+#: src/server/tcpserver.c:487 src/server/tcpserver.c:512
+#, c-format
+msgid ""
+"Malformed network specification in the configuration in section `%s' for "
+"entry `%s': %s\n"
+msgstr ""
+
+#: src/server/tcpserver.c:572
+#, c-format
+msgid "Registering failed, message type %d already in use.\n"
+msgstr ""
+
+#: src/server/startup.c:219
+#, c-format
+msgid "Unable to obtain filesystem information for `%s': %u\n"
+msgstr ""
+
+#: src/server/startup.c:237
+#, c-format
+msgid ""
+"Filesystem `%s' of partition `%s' is unknown. Please contact gnunet-"
+"developers@gnu.org!"
+msgstr ""
+
+#: src/server/startup.c:252
+#, c-format
+msgid ""
+"Limiting datastore size to %llu GB, because the `%s' filesystem does not "
+"support larger files. Please consider storing the database on a NTFS "
+"partition!\n"
+msgstr ""
+
+#: src/server/startup.c:291
+#, c-format
+msgid "Insufficient access permissions for `%s': %s\n"
+msgstr ""
+
+#: src/server/gnunet-peer-info.c:55
+msgid "Print information about GNUnet peers."
+msgstr ""
+
+#: src/server/gnunet-peer-info.c:59
+msgid "don't resolve host names"
+msgstr ""
+
+#: src/server/gnunet-peer-info.c:62
+msgid "output only the identity strings"
+msgstr ""
+
+#: src/server/gnunet-peer-info.c:65
+msgid "output our own identity only"
+msgstr ""
+
+#: src/server/gnunet-peer-info.c:130 src/server/gnunet-peer-info.c:164
+#, c-format
+msgid "Could not get address of peer `%s'.\n"
+msgstr ""
+
+#: src/server/gnunet-peer-info.c:143
+#, c-format
+msgid "`%s' message invalid (signature invalid).\n"
+msgstr ""
+
+#: src/server/gnunet-peer-info.c:168
+#, c-format
+msgid "Peer `%s' with trust %8u\n"
+msgstr ""
+
+#: src/server/gnunet-peer-info.c:175
+#, c-format
+msgid "Peer `%s' with trust %8u and address `%s'\n"
+msgstr ""
+
+#: src/server/connection.c:1313
+#, c-format
+msgid "`%s' selected %d out of %d messages (MTU: %d).\n"
+msgstr ""
+
+#: src/server/connection.c:1323
+#, c-format
+msgid "Message details: %u: length %d, priority: %d\n"
+msgstr ""
+
+#: src/server/connection.c:3129
+#, c-format
+msgid "Message from `%s' discarded: invalid format.\n"
+msgstr ""
+
+#: src/server/connection.c:3218
+#, c-format
+msgid "Invalid sequence number %u <= %u, dropping message.\n"
+msgstr ""
+
+#: src/server/connection.c:3240
+msgid "Message received more than one day old. Dropped.\n"
+msgstr ""
+
+#: src/server/connection.c:3763
+msgid "# outgoing messages dropped"
+msgstr ""
+
+#: src/server/connection.c:3766
+msgid "# bytes of outgoing messages dropped"
+msgstr ""
+
+#: src/server/connection.c:3768
+msgid "# connections closed (HANGUP sent)"
+msgstr ""
+
+#: src/server/connection.c:3772
+msgid "# connections closed (transport issue)"
+msgstr ""
+
+#: src/server/connection.c:3775
+msgid "# bytes encrypted"
+msgstr ""
+
+#: src/server/connection.c:3779
+msgid "# bytes transmitted"
+msgstr ""
+
+#: src/server/connection.c:3783
+msgid "# bytes received"
+msgstr ""
+
+#: src/server/connection.c:3785
+msgid "# bytes decrypted"
+msgstr ""
+
+#: src/server/connection.c:3786
+msgid "# bytes noise sent"
+msgstr ""
+
+#: src/server/connection.c:3789
+msgid "# total bytes per second send limit"
+msgstr ""
+
+#: src/server/connection.c:3792
+msgid "# total bytes per second receive limit"
+msgstr ""
+
+#: src/server/connection.c:3795
+msgid "# total number of messages in send buffers"
+msgstr ""
+
+#: src/server/connection.c:3798
+msgid "# total number of bytes we were allowed to send but did not"
+msgstr ""
+
+#: src/server/connection.c:3801
+msgid "# total number of bytes we were allowed to sent"
+msgstr ""
+
+#: src/server/connection.c:3804
+msgid "# total number of bytes we are currently allowed to send"
+msgstr ""
+
+#: src/server/connection.c:3807
+msgid "# transports switched to stream transport"
+msgstr ""
+
+#: src/server/connection.c:3810
+msgid "# average connection lifetime (in ms)"
+msgstr ""
+
+#: src/server/connection.c:3813
+msgid "# conn. shutdown: other peer sent too much"
+msgstr ""
+
+#: src/server/connection.c:3816
+msgid "# conn. shutdown: we lacked bandwidth"
+msgstr ""
+
+#: src/server/connection.c:3819
+msgid "# conn. shutdown: other peer timed out"
+msgstr ""
+
+#: src/server/connection.c:3822
+msgid "# conn. shutdown: timed out during connect"
+msgstr ""
+
+#: src/server/connection.c:3825
+msgid "# conn. shutdown: other peer requested it"
+msgstr ""
+
+#: src/server/handler.c:442
+#, c-format
+msgid "Received corrupt message from peer `%s' in %s:%d.\n"
+msgstr ""
+
+#: src/server/gnunet-transport-check.c:121
+#, c-format
+msgid "`%s': Could not create hello.\n"
+msgstr ""
+
+#: src/server/gnunet-transport-check.c:129
+#, c-format
+msgid "`%s': Could not connect.\n"
+msgstr ""
+
+#: src/server/gnunet-transport-check.c:163
+#, c-format
+msgid "`%s': Could not send.\n"
+msgstr ""
+
+#: src/server/gnunet-transport-check.c:179
+#, c-format
+msgid "`%s': Did not receive message within %llu ms.\n"
+msgstr ""
+
+#: src/server/gnunet-transport-check.c:192
+#, c-format
+msgid "`%s': Could not disconnect.\n"
+msgstr ""
+
+#: src/server/gnunet-transport-check.c:200
+#, c-format
+msgid ""
+"`%s' transport OK. It took %ums to transmit %llu messages of %llu bytes "
+"each.\n"
+msgstr ""
+
+#: src/server/gnunet-transport-check.c:231
+#, c-format
+msgid " Transport %d is not being tested\n"
+msgstr ""
+
+#: src/server/gnunet-transport-check.c:261
+#, c-format
+msgid ""
+"\n"
+"Contacting `%s'."
+msgstr ""
+
+#: src/server/gnunet-transport-check.c:286
+#, c-format
+msgid " Connection failed\n"
+msgstr ""
+
+#: src/server/gnunet-transport-check.c:292
+#, c-format
+msgid " Connection failed (bug?)\n"
+msgstr ""
+
+#: src/server/gnunet-transport-check.c:330
+#, c-format
+msgid "Timeout after %llums.\n"
+msgstr ""
+
+#: src/server/gnunet-transport-check.c:332
+#, c-format
+msgid "OK!\n"
+msgstr ""
+
+#: src/server/gnunet-transport-check.c:357
+msgid "Tool to test if GNUnet transport services are operational."
+msgstr ""
+
+#: src/server/gnunet-transport-check.c:361
+msgid "ping peers from HOSTLISTURL that match transports"
+msgstr ""
+
+#: src/server/gnunet-transport-check.c:364
+msgid "send COUNT messages"
+msgstr ""
+
+#: src/server/gnunet-transport-check.c:367
+msgid "send messages with SIZE bytes payload"
+msgstr ""
+
+#: src/server/gnunet-transport-check.c:370
+msgid "specifies which TRANSPORT should be tested"
+msgstr ""
+
+#: src/server/gnunet-transport-check.c:373
+msgid "specifies after how many MS to time-out"
+msgstr ""
+
+#: src/server/gnunet-transport-check.c:381
+msgid "repeat each test X times"
+msgstr ""
+
+#: src/server/gnunet-transport-check.c:449
+#, c-format
+msgid "Testing transport(s) %s\n"
+msgstr ""
+
+#: src/server/gnunet-transport-check.c:451
+#, c-format
+msgid "Available transport(s): %s\n"
+msgstr ""
+
+#: src/server/gnunet-transport-check.c:501
+#, c-format
+msgid ""
+"\n"
+"%d out of %d peers contacted successfully (%d times transport unavailable).\n"
+msgstr ""
+
+#: src/transports/common.c:370
+#, c-format
+msgid "Port is 0, will only send using %s.\n"
+msgstr ""
+
+#: src/transports/smtp.c:367 src/transports/udp.c:107 src/transports/tcp.c:271
+#: src/transports/tcp.c:291
+#, c-format
+msgid "Received malformed message via %s. Ignored.\n"
+msgstr ""
+
+#: src/transports/smtp.c:459
+msgid "SMTP filter string to invalid, lacks ': '\n"
+msgstr ""
+
+#: src/transports/smtp.c:469
+#, c-format
+msgid "SMTP filter string to long, capped to `%s'\n"
+msgstr ""
+
+#: src/transports/smtp.c:564 src/transports/smtp.c:575
+#: src/transports/smtp.c:589 src/transports/smtp.c:609
+#: src/transports/smtp.c:634 src/transports/smtp.c:643
+#: src/transports/smtp.c:657 src/transports/smtp.c:669
+#, c-format
+msgid "SMTP: `%s' failed: %s.\n"
+msgstr ""
+
+#: src/transports/smtp.c:814
+msgid "No email-address specified, can not start SMTP transport.\n"
+msgstr ""
+
+#: src/transports/smtp.c:831
+msgid "# bytes received via SMTP"
+msgstr ""
+
+#: src/transports/smtp.c:832
+msgid "# bytes sent via SMTP"
+msgstr ""
+
+#: src/transports/smtp.c:834
+msgid "# bytes dropped by SMTP (outgoing)"
+msgstr ""
+
+#: src/transports/upnp/upnp.c:431
+#, c-format
+msgid "%s failed for url `%s' and post-data `%s' at %s:%d: `%s'\n"
+msgstr ""
+
+#: src/transports/upnp/upnp.c:476
+#, c-format
+msgid "upnp: NAT Returned IP: %s\n"
+msgstr ""
+
+#: src/transports/http.c:2019 src/transports/tcp.c:811
+#, c-format
+msgid ""
+"The UPnP service could not be loaded. To disable UPnP, set the configuration "
+"option \"UPNP\" in section \"%s\" to \"NO\"\n"
+msgstr ""
+
+#: src/transports/http.c:2028
+msgid "# bytes received via HTTP"
+msgstr ""
+
+#: src/transports/http.c:2029
+msgid "# bytes sent via HTTP"
+msgstr ""
+
+#: src/transports/http.c:2031
+msgid "# bytes dropped by HTTP (outgoing)"
+msgstr ""
+
+#: src/transports/http.c:2032
+msgid "# HTTP GET issued"
+msgstr ""
+
+#: src/transports/http.c:2034
+msgid "# HTTP GET received"
+msgstr ""
+
+#: src/transports/http.c:2035
+msgid "# HTTP PUT issued"
+msgstr ""
+
+#: src/transports/http.c:2037
+msgid "# HTTP PUT received"
+msgstr ""
+
+#: src/transports/http.c:2039
+msgid "# HTTP select calls"
+msgstr ""
+
+#: src/transports/http.c:2041
+msgid "# HTTP send calls"
+msgstr ""
+
+#: src/transports/http.c:2044
+msgid "# HTTP curl send callbacks"
+msgstr ""
+
+#: src/transports/http.c:2046
+msgid "# HTTP curl receive callbacks"
+msgstr ""
+
+#: src/transports/http.c:2048
+msgid "# HTTP mhd access callbacks"
+msgstr ""
+
+#: src/transports/http.c:2050
+msgid "# HTTP mhd read callbacks"
+msgstr ""
+
+#: src/transports/http.c:2052
+msgid "# HTTP mhd close callbacks"
+msgstr ""
+
+#: src/transports/http.c:2054
+msgid "# HTTP connect calls"
+msgstr ""
+
+#: src/transports/ip.c:70 src/transports/ip.c:365
+#, c-format
+msgid "Failed to obtain my (external) %s address!\n"
+msgstr ""
+
+#: src/transports/udp.c:472 src/transports/tcp.c:728
+#, c-format
+msgid "Failed to bind to %s port %d.\n"
+msgstr ""
+
+#: src/transports/udp.c:538
+#, c-format
+msgid "MTU %llu for `%s' is probably too low!\n"
+msgstr ""
+
+#: src/transports/udp.c:562
+msgid "# bytes received via UDP"
+msgstr ""
+
+#: src/transports/udp.c:563
+msgid "# bytes sent via UDP"
+msgstr ""
+
+#: src/transports/udp.c:565
+msgid "# bytes dropped by UDP (outgoing)"
+msgstr ""
+
+#: src/transports/udp.c:567
+msgid "# UDP connections (right now)"
+msgstr ""
+
+#: src/transports/tcp.c:821
+msgid "# bytes received via TCP"
+msgstr ""
+
+#: src/transports/tcp.c:822
+msgid "# bytes sent via TCP"
+msgstr ""
+
+#: src/transports/tcp.c:824
+msgid "# bytes dropped by TCP (outgoing)"
+msgstr ""
+
+#: src/include/gnunet_util_getopt.h:154
+msgid "print this help"
+msgstr ""
+
+#: src/include/gnunet_util_getopt.h:163
+msgid "print the version number"
+msgstr ""
+
+#: src/include/gnunet_util_getopt.h:169
+msgid "configure logging to use LOGLEVEL"
+msgstr ""
+
+#: src/include/gnunet_util_getopt.h:175
+msgid "be verbose"
+msgstr ""
+
+#: src/include/gnunet_util_getopt.h:181
+msgid "use configuration file FILENAME"
+msgstr ""
+
+#: src/include/gnunet_util_getopt.h:187
+msgid "specify host on which gnunetd is running"
+msgstr ""
+
+#: src/include/gnunet_util_error.h:219 src/include/gnunet_util_error.h:224
+#: src/include/gnunet_util_error.h:230 src/include/gnunet_util_error.h:232
+#, c-format
+msgid "Internal error: assertion failed at %s:%d.\n"
+msgstr ""
+
+#: src/include/gnunet_util_error.h:242
+#, c-format
+msgid ""
+"External protocol violation: assertion failed at %s:%d (no need to panic, we "
+"can handle this).\n"
+msgstr ""
+
+#: src/include/gnunet_util_error.h:270 src/include/gnunet_util_error.h:277
+#, c-format
+msgid "`%s' failed on file `%s' at %s:%d with error: %s\n"
+msgstr ""
+
+#: contrib/config-daemon.scm:39 contrib/config-client.scm:40
+msgid "No help available."
+msgstr ""
+
+#: contrib/config-daemon.scm:42
+msgid ""
+"You can use 'make check' in src/transports/upnp/ to find out if your NAT "
+"supports UPnP. You should disable this option if you are sure that you are "
+"not behind a NAT. If your NAT box does not support UPnP, having this on "
+"will not do much harm (only cost a small amount of resources)."
+msgstr ""
+
+#: contrib/config-daemon.scm:54 contrib/config-client.scm:53
+msgid "Prompt for development and/or incomplete code"
+msgstr ""
+
+#: contrib/config-daemon.scm:56 contrib/config-client.scm:55
+msgid ""
+"If EXPERIMENTAL is set to NO, options for experimental code are not shown. "
+"If in doubt, use NO.\n"
+"\n"
+"Some options apply to experimental code that maybe in a state of development "
+"where the functionality, stability, or the level of testing is not yet high "
+"enough for general use. These features are said to be of \"alpha\" "
+"quality. If a feature is currently in alpha, uninformed use is discouraged "
+"(since the developers then do not fancy \"Why doesn't this work?\" type "
+"messages).\n"
+"\n"
+"However, active testing and qualified feedback of these features is always "
+"welcome. Users should just be aware that alpha features may not meet the "
+"normal level of reliability or it may fail to work in some special cases. "
+"Bug reports are usually welcomed by the developers, but please read the "
+"documents <file://README> and <http://gnunet.org/faq.php3> and use <https://"
+"gnunet.org/mantis/> for how to report problems."
+msgstr ""
+
+#: contrib/config-daemon.scm:71 contrib/config-client.scm:70
+msgid "Show options for advanced users"
+msgstr ""
+
+#: contrib/config-daemon.scm:73 contrib/config-client.scm:72
+msgid ""
+"These are options that maybe difficult to understand for the beginner. These "
+"options typically refer to features that allow tweaking of the "
+"installation. If in a hurry, say NO."
+msgstr ""
+
+#: contrib/config-daemon.scm:84 contrib/config-client.scm:83
+msgid "Show rarely used options"
+msgstr ""
+
+#: contrib/config-daemon.scm:86 contrib/config-client.scm:85
+msgid ""
+"These are options that hardly anyone actually needs. If you plan on doing "
+"development on GNUnet, you may want to look into these. If in doubt or in a "
+"hurry, say NO."
+msgstr ""
+
+#: contrib/config-daemon.scm:97 contrib/config-client.scm:96
+msgid "Meta-configuration"
+msgstr ""
+
+#: contrib/config-daemon.scm:98 contrib/config-client.scm:97
+msgid "Which level of configuration should be available"
+msgstr ""
+
+#: contrib/config-daemon.scm:115
+msgid "Full pathname of GNUnet HOME directory"
+msgstr ""
+
+#: contrib/config-daemon.scm:117
+msgid ""
+"This gives the root-directory of the GNUnet installation. Make sure there is "
+"some space left in that directory. :-) Users inserting or indexing files "
+"will be able to store data in this directory up to the (global) quota "
+"specified below. Having a few gigabytes of free space is recommended."
+msgstr ""
+
+#: contrib/config-daemon.scm:130
+msgid "Full pathname of GNUnet directory for file-sharing data"
+msgstr ""
+
+#: contrib/config-daemon.scm:142
+msgid "Full pathname to the directory with the key-value database"
+msgstr ""
+
+#: contrib/config-daemon.scm:143
+msgid "Note that the kvstore is currently not used."
+msgstr ""
+
+#: contrib/config-daemon.scm:154
+msgid "Full pathname of GNUnet directory for indexed files symbolic links"
+msgstr ""
+
+#: contrib/config-daemon.scm:166
+msgid "How many minutes should peer advertisements last?"
+msgstr ""
+
+#: contrib/config-daemon.scm:168
+msgid ""
+"How many minutes is the current IP valid? (GNUnet will sign HELLO messages "
+"with this expiration timeline. If you are on dialup, 60 (for 1 hour) is "
+"suggested. If you have a static IP address, you may want to set this to a "
+"large value (say 14400). The default is 1440 (1 day). If your IP changes "
+"periodically, you will want to choose an expiry period smaller than the "
+"frequency with which your IP changes."
+msgstr ""
+
+#: contrib/config-daemon.scm:179
+msgid "Where can GNUnet find an initial list of peers?"
+msgstr ""
+
+#: contrib/config-daemon.scm:181
+msgid ""
+"GNUnet can automatically update the hostlist from the web. While GNUnet "
+"internally communicates which hosts are online, it is typically a good idea "
+"to get a fresh hostlist whenever gnunetd starts from the WEB. By setting "
+"this option, you can specify from which server gnunetd should try to "
+"download the hostlist. The default should be fine for now.\n"
+"\t\t\n"
+"The general format is a list of space-separated URLs. Each URL must have "
+"the format http://HOSTNAME/FILENAME\n"
+"\t\t\n"
+"If you want to setup an alternate hostlist server, you must run a permanent "
+"node and \"cat data/hosts/* > hostlist\" every few minutes to keep the list "
+"up-to-date.\n"
+"\t\t\n"
+"If you do not specify a HOSTLISTURL, you must copy valid hostkeys to data/"
+"hosts manually."
+msgstr ""
+
+#: contrib/config-daemon.scm:198
+msgid "HTTP Proxy Server"
+msgstr ""
+
+#: contrib/config-daemon.scm:200
+msgid ""
+"If you have to use a proxy for outbound HTTP connections, specify the proxy "
+"configuration here. Default is no proxy."
+msgstr ""
+
+#: contrib/config-daemon.scm:212
+msgid ""
+"Name of the directory where gnunetd should store contact information about "
+"peers"
+msgstr ""
+
+#: contrib/config-daemon.scm:214
+msgid ""
+"Unless you want to share the directory directly using a webserver, the "
+"default is most likely just fine."
+msgstr ""
+
+#: contrib/config-daemon.scm:240 contrib/config-client.scm:140
+msgid "How long should logs be kept?"
+msgstr ""
+
+#: contrib/config-daemon.scm:242 contrib/config-client.scm:142
+msgid ""
+"How long should logs be kept? If you specify a value greater than zero, a "
+"log is created each day with the date appended to its filename. These logs "
+"are deleted after $KEEPLOG days.\tTo keep logs forever, set this value to 0."
+msgstr ""
+
+#: contrib/config-daemon.scm:253
+msgid ""
+"What maximum number of open file descriptors should be requested from the OS?"
+msgstr ""
+
+#: contrib/config-daemon.scm:255
+msgid ""
+"The default of 1024 should be fine for most systems. If your system can "
+"support more, increasing the number might help support additional clients on "
+"machines with plenty of bandwidth. For embedded systems, a smaller number "
+"might be acceptable. A value of 0 will leave the descriptor limit "
+"untouched. This option is mostly for OS X systems where the default is too "
+"low. Note that if gnunetd cannot obtain the desired number of file "
+"descriptors from the operating system, it will print a warning and try to "
+"run with what it is given."
+msgstr ""
+
+#: contrib/config-daemon.scm:266
+msgid "Where should gnunetd write the logs?"
+msgstr ""
+
+#: contrib/config-daemon.scm:278
+msgid "Enable for extra-verbose logging."
+msgstr ""
+
+#: contrib/config-daemon.scm:290 contrib/config-client.scm:165
+msgid "Logging"
+msgstr ""
+
+#: contrib/config-daemon.scm:291 contrib/config-client.scm:166
+msgid "Specify which system messages should be logged how"
+msgstr ""
+
+#: contrib/config-daemon.scm:296 contrib/config-client.scm:170
+msgid "Logging of events for users"
+msgstr ""
+
+#: contrib/config-daemon.scm:297 contrib/config-client.scm:171
+msgid "Logging of events for the system administrator"
+msgstr ""
+
+#: contrib/config-daemon.scm:309
+msgid "Where should gnunetd write the PID?"
+msgstr ""
+
+#: contrib/config-daemon.scm:310
+msgid ""
+"The default is no longer /var/run/gnunetd.pid since we could not delete the "
+"file on shutdown at that location."
+msgstr ""
+
+#: contrib/config-daemon.scm:322
+msgid "As which user should gnunetd run?"
+msgstr ""
+
+#: contrib/config-daemon.scm:324
+msgid ""
+"Empty means \"current user\". On computer startup, it is root/SYSTEM. Under "
+"Windows, this setting affects the creation of a new system service only."
+msgstr ""
+
+#: contrib/config-daemon.scm:337
+msgid "Should gnunetd be automatically started when the system boots?"
+msgstr ""
+
+#: contrib/config-daemon.scm:338
+msgid ""
+"Set to YES if gnunetd should be automatically started on boot. If this "
+"option is set, gnunet-setup will install a script to start the daemon upon "
+"completion. This option may not work on all systems."
+msgstr ""
+
+#: contrib/config-daemon.scm:350
+msgid "Which transport mechanisms should GNUnet use?"
+msgstr ""
+
+#: contrib/config-daemon.scm:352
+msgid ""
+"Use a space-separated list of modules, e.g. \"udp smtp tcp\". The "
+"available transports are udp, tcp, http, smtp and nat.\n"
+"\t\t\n"
+"Loading the 'nat' and 'tcp' modules is required for peers behind NAT boxes "
+"that cannot directly be reached from the outside. Peers that are NOT behind "
+"a NAT box and that want to *allow* peers that ARE behind a NAT box to "
+"connect must ALSO load the 'nat' module. Note that the actual transfer will "
+"always be via tcp initiated by the peer behind the NAT box. The nat "
+"transport requires the use of tcp, http and/or smtp in addition to nat "
+"itself."
+msgstr ""
+
+#: contrib/config-daemon.scm:366
+msgid "Which applications should gnunetd support?"
+msgstr ""
+
+#: contrib/config-daemon.scm:368
+msgid ""
+"Whenever this option is changed, you MUST run gnunet-update. Currently, the "
+"available applications are:\n"
+"\n"
+"advertising: advertises your peer to other peers. Without it, your peer will "
+"not participate in informing peers about other peers. You should always "
+"load this module.\n"
+"\n"
+"getoption: allows clients to query gnunetd about the values of various "
+"configuration options. Many tools need this. You should always load this "
+"module.\n"
+"\n"
+"stats: allows tools like gnunet-stats and gnunet-gtk to query gnunetd about "
+"various statistics. This information is usually quite useful to diagnose "
+"errors, hence it is recommended that you load this module.\n"
+"\n"
+"traffic: keeps track of how many messages were recently received and "
+"transmitted. This information can then be used to establish how much cover "
+"traffic is currently available. The amount of cover traffic becomes "
+"important if you want to make anonymous requests with an anonymity level "
+"that is greater than one. It is recommended that you load this module.\n"
+"\n"
+"fs: needed for anonymous file sharing. You should always load this module.\n"
+"\n"
+"hostlist: integrated hostlist HTTP server. Useful if you want to offer a "
+"hostlist and running Apache would be overkill.\n"
+"\n"
+"chat: broadcast chat (demo-application, ALPHA quality).\tRequired for gnunet-"
+"chat. Note that the current implementation of chat is not considered to be "
+"secure.\n"
+"\n"
+"tbench: benchmark transport performance. Required for gnunet-tbench. Note "
+"that tbench allows other users to abuse your resources.\n"
+"\n"
+"tracekit: topology visualization toolkit. Required for gnunet-tracekit. "
+"Note that loading tracekit will make it slightly easier for an adversary to "
+"compromise your anonymity."
+msgstr ""
+
+#: contrib/config-daemon.scm:399
+msgid "Disable client-server connections"
+msgstr ""
+
+#: contrib/config-daemon.scm:400
+msgid ""
+"This option can be used to tell gnunetd not to open the client port. When "
+"run like this, gnunetd will participate as a peer in the network but not "
+"support any user interfaces. This may be useful for headless systems that "
+"are never expected to have end-user interactions. Note that this will also "
+"prevent you from running diagnostic tools like gnunet-stats!"
+msgstr ""
+
+#: contrib/config-daemon.scm:412
+msgid "YES disables IPv6 support, NO enables IPv6 support"
+msgstr ""
+
+#: contrib/config-daemon.scm:413
+msgid ""
+"This option may be useful on peers where the kernel does not support IPv6. "
+"You might also want to set this option if you do not have an IPv6 network "
+"connection."
+msgstr ""
+
+#: contrib/config-daemon.scm:425
+msgid "Disable peer discovery"
+msgstr ""
+
+#: contrib/config-daemon.scm:426
+msgid ""
+"The option 'PRIVATE-NETWORK' can be used to limit the connections of this "
+"peer to peers of which the hostkey has been copied by hand to data/hosts; "
+"if this option is given, GNUnet will not accept advertisements of peers that "
+"the local node does not already know about. Note that in order for this "
+"option to work, HOSTLISTURL should either not be set at all or be set to a "
+"trusted peer that only advertises the private network. Also, the option does "
+"NOT work at the moment if the NAT transport is loaded; for that, a couple of "
+"lines above would need some minor editing :-)."
+msgstr ""
+
+#: contrib/config-daemon.scm:437
+msgid "Disable advertising this peer to other peers"
+msgstr ""
+
+#: contrib/config-daemon.scm:449
+msgid "Disable automatic establishment of connections"
+msgstr ""
+
+#: contrib/config-daemon.scm:450
+msgid ""
+"If this option is enabled, GNUnet will not automatically establish "
+"connections to other peers, but instead wait for applications to "
+"specifically request connections to other peers (or for other peers to "
+"connect to us)."
+msgstr ""
+
+#: contrib/config-daemon.scm:461
+msgid "Enable advertising of other peers by this peer"
+msgstr ""
+
+#: contrib/config-daemon.scm:462
+msgid ""
+"This option may be useful during testing, but turning it off is dangerous! "
+"If in any doubt, set it to YES (which is the default)."
+msgstr ""
+
+#: contrib/config-daemon.scm:473
+msgid "Port for communication with GNUnet user interfaces"
+msgstr ""
+
+#: contrib/config-daemon.scm:474
+msgid ""
+"Which is the client-server port that is used between gnunetd and the clients "
+"(TCP only). You may firewall this port for non-local machines (but you do "
+"not have to since GNUnet will perform access control and only allow "
+"connections from machines that are listed under TRUSTED)."
+msgstr ""
+
+#: contrib/config-daemon.scm:485
+msgid "Port for the integrated hostlist HTTP server"
+msgstr ""
+
+#: contrib/config-daemon.scm:497
+msgid "IPv4 networks allowed to use gnunetd server"
+msgstr ""
+
+#: contrib/config-daemon.scm:498 contrib/config-daemon.scm:510
+msgid ""
+"This option specifies which hosts are trusted enough to connect as clients "
+"(to the TCP port). This is useful if you run gnunetd on one host of your "
+"network and want to allow all other hosts to use this node as their server. "
+"By default, this is set to 'loopback only'. The format is IP/NETMASK where "
+"the IP is specified in dotted-decimal and the netmask either in CIDR "
+"notation (/16) or in dotted decimal (255.255.0.0). Several entries must be "
+"separated by a semicolon, spaces are not allowed."
+msgstr ""
+
+#: contrib/config-daemon.scm:509
+msgid "IPv6 networks allowed to use gnunetd server"
+msgstr ""
+
+#: contrib/config-daemon.scm:522
+msgid "Limit connections to the specfied set of peers."
+msgstr ""
+
+#: contrib/config-daemon.scm:523
+msgid ""
+"If this option is not set, any peer is allowed to connect. If it is set, "
+"only the specified peers are allowed. Specify the list of peer IDs (not IPs!)"
+msgstr ""
+
+#: contrib/config-daemon.scm:534
+msgid "Run gnunetd as this group."
+msgstr ""
+
+#: contrib/config-daemon.scm:535
+msgid ""
+"When started as root, gnunetd will change permissions to the given group."
+msgstr ""
+
+#: contrib/config-daemon.scm:546
+msgid "Prevent the specfied set of peers from connecting."
+msgstr ""
+
+#: contrib/config-daemon.scm:547
+msgid ""
+"If this option is not set, any peer is allowed to connect. If the ID of a "
+"peer is listed here, connections from that peer will be refused. Specify "
+"the list of peer IDs (not IPs!)"
+msgstr ""
+
+#: contrib/config-daemon.scm:558
+msgid "Topology Maintenance"
+msgstr ""
+
+#: contrib/config-daemon.scm:559
+msgid "Rarely used settings for peer advertisements and connections"
+msgstr ""
+
+#: contrib/config-daemon.scm:579
+msgid "General settings"
+msgstr ""
+
+#: contrib/config-daemon.scm:580
+msgid "Settings that change the behavior of GNUnet in general"
+msgstr ""
+
+#: contrib/config-daemon.scm:607
+msgid "Modules"
+msgstr ""
+
+#: contrib/config-daemon.scm:608
+msgid "Settings that select specific implementations for GNUnet modules"
+msgstr ""
+
+#: contrib/config-daemon.scm:626
+msgid "Fundamentals"
+msgstr ""
+
+#: contrib/config-daemon.scm:646
+msgid "Which database should be used?"
+msgstr ""
+
+#: contrib/config-daemon.scm:648
+msgid ""
+"Which database should be used? The options are \"sqstore_sqlite\", "
+"\"sqstore_postgres\" and \"sqstore_mysql\". You must run gnunet-update "
+"after changing this value!\n"
+"\t\t\t\n"
+"In order to use MySQL or Postgres, you must configure the respective "
+"database, which is relatively simple. Read the file doc/README.mysql or doc/"
+"README.postgres for how to setup the respective database."
+msgstr ""
+
+#: contrib/config-daemon.scm:661 contrib/config-daemon.scm:674
+msgid "Which topology should be used?"
+msgstr ""
+
+#: contrib/config-daemon.scm:662
+msgid "Which database should be used for the temporary datastore of the DHT?"
+msgstr ""
+
+#: contrib/config-daemon.scm:676
+msgid ""
+"Which topology should be used? The only option at the moment is "
+"\"topology_default\""
+msgstr ""
+
+#: contrib/config-daemon.scm:690
+msgid ""
+"The minimum number of connected friends before this peer is allowed to "
+"connect to peers that are not listed as friends"
+msgstr ""
+
+#: contrib/config-daemon.scm:691
+msgid ""
+"Note that this option does not guarantee that the peer will be able to "
+"connect to the specified number of friends. Also, if the peer had connected "
+"to a sufficient number of friends and then established non-friend "
+"connections, some of the friends may drop out of the network, temporarily "
+"resulting in having fewer than the specified number of friends connected "
+"while being connected to non-friends. However, it is guaranteed that the "
+"peer itself will never choose to drop a friend's connection if this would "
+"result in dropping below the specified number of friends (unless that number "
+"is higher than the overall connection target)."
+msgstr ""
+
+#: contrib/config-daemon.scm:702
+msgid ""
+"If set to YES, the peer is only allowed to connect to other peers that are "
+"explicitly specified as friends"
+msgstr ""
+
+#: contrib/config-daemon.scm:703
+msgid ""
+"Use YES only if you have (trustworthy) friends that use GNUnet and are "
+"afraid of establishing (direct) connections to unknown peers"
+msgstr ""
+
+#: contrib/config-daemon.scm:714
+msgid "List of friends for friend-to-friend topology"
+msgstr ""
+
+#: contrib/config-daemon.scm:715
+msgid ""
+"Specifies the name of a file which contains a list of GNUnet peer IDs that "
+"are friends. If used with the friend-to-friend topology, this will ensure "
+"that GNUnet only connects to these peers (via any available transport)."
+msgstr ""
+
+#: contrib/config-daemon.scm:726
+msgid "Friend-to-Friend Topology Specification"
+msgstr ""
+
+#: contrib/config-daemon.scm:727
+msgid "Settings for restricting connections to friends"
+msgstr ""
+
+#: contrib/config-daemon.scm:744
+msgid "Name of the MySQL database GNUnet should use"
+msgstr ""
+
+#: contrib/config-daemon.scm:756
+msgid "Configuration file that specifies the MySQL username and password"
+msgstr ""
+
+#: contrib/config-daemon.scm:768
+msgid "Configuration of the MySQL database"
+msgstr ""
+
+#: contrib/config-daemon.scm:787
+msgid "MB of diskspace GNUnet can use for anonymous file sharing"
+msgstr ""
+
+#: contrib/config-daemon.scm:789
+msgid ""
+"How much disk space (MB) is GNUnet allowed to use for anonymous file "
+"sharing? This does not take indexed files into account, only the space "
+"directly used by GNUnet is accounted for. GNUnet will gather content from "
+"the network if the current space-consumption is below the number given here "
+"(and if content migration is allowed below).\n"
+"\n"
+"Note that if you change the quota, you need to run gnunet-update afterwards."
+msgstr ""
+
+#: contrib/config-daemon.scm:803
+msgid "Number of entries in the migration buffer"
+msgstr ""
+
+#: contrib/config-daemon.scm:804
+msgid ""
+"Each entry uses about 32k of memory. More entries can reduce disk IO and "
+"CPU usage at the expense of having gnunetd use more memory. Very large "
+"values may again increase CPU usage. A value of 0 will prevent your peer "
+"from sending unsolicited responses."
+msgstr ""
+
+#: contrib/config-daemon.scm:816
+msgid "Size of the routing table for anonymous routing."
+msgstr ""
+
+#: contrib/config-daemon.scm:828
+msgid "Size of the routing table for DHT routing."
+msgstr ""
+
+#: contrib/config-daemon.scm:841
+msgid "Allow migrating content to this peer."
+msgstr ""
+
+#: contrib/config-daemon.scm:843
+msgid ""
+"If you say yes here, GNUnet will migrate content to your server, and you "
+"will not be able to control what data is stored on your machine. \n"
+"\t\t\t\n"
+"If you activate it, you can claim for *all* the non-indexed (-n to gnunet-"
+"insert) content that you did not know what it was even if an adversary takes "
+"control of your machine. If you do not activate it, it is obvious that you "
+"have knowledge of all the content that is hosted on your machine and thus "
+"can be considered liable for it."
+msgstr ""
+
+#: contrib/config-daemon.scm:857
+msgid ""
+"MB of diskspace GNUnet can use for caching DHT index data (the data will be "
+"stored in /tmp)"
+msgstr ""
+
+#: contrib/config-daemon.scm:858
+msgid ""
+"DHT index data is inherently small and expires comparatively quickly. It is "
+"deleted whenever gnunetd is shut down.\n"
+"\n"
+"The size of the DSTORE QUOTA is specified in MB."
+msgstr ""
+
+#: contrib/config-daemon.scm:872
+msgid "Options for anonymous file sharing"
+msgstr ""
+
+#: contrib/config-daemon.scm:891
+msgid "Applications"
+msgstr ""
+
+#: contrib/config-daemon.scm:907
+msgid "Is this machine unreachable behind a NAT?"
+msgstr ""
+
+#: contrib/config-daemon.scm:908
+msgid ""
+"Set to YES if this machine is behind a NAT that limits connections from the "
+"outside to the GNUnet port and that cannot be traversed using UPnP. Note "
+"that if you have configured your NAT box to allow direct connections from "
+"other machines to the GNUnet ports or if GNUnet can open ports using UPnP, "
+"you should set the option to NO. Set this only to YES if other peers cannot "
+"contact you directly. You can use 'make check' in src/transports/upnp/ to "
+"find out if your NAT supports UPnP. You can also use gnunet-transport-check "
+"with the '-p' option in order to determine which setting results in more "
+"connections. Use YES only if you get no connections otherwise. Set to AUTO "
+"to use YES if the local IP is belongs to a private IP network and NO "
+"otherwise."
+msgstr ""
+
+#: contrib/config-daemon.scm:919
+msgid "Which port should be used by the TCP IPv4 transport?"
+msgstr ""
+
+#: contrib/config-daemon.scm:931 contrib/config-daemon.scm:1024
+#: contrib/config-daemon.scm:1174
+msgid "Should we try to determine our external IP using UPnP?"
+msgstr ""
+
+#: contrib/config-daemon.scm:943
+msgid "Which IP(v4)s are not allowed to connect?"
+msgstr ""
+
+#: contrib/config-daemon.scm:955
+msgid ""
+"Which IP(v4)s are allowed to connect? Leave empty to use the IP of your "
+"primary network interface."
+msgstr ""
+
+#: contrib/config-daemon.scm:967 contrib/config-daemon.scm:1222
+msgid "Which IPv6s are not allowed to connect?"
+msgstr ""
+
+#: contrib/config-daemon.scm:979 contrib/config-daemon.scm:1234
+msgid ""
+"Which IPv6s are allowed to connect? Leave empty to allow any IP to connect."
+msgstr ""
+
+#: contrib/config-daemon.scm:992
+msgid "TCP transport"
+msgstr ""
+
+#: contrib/config-daemon.scm:1012
+msgid "Which port should be used by the HTTP transport?"
+msgstr ""
+
+#: contrib/config-daemon.scm:1036
+msgid "Which is the external port of the HTTP transport?"
+msgstr ""
+
+#: contrib/config-daemon.scm:1037
+msgid ""
+"Use this option if your firewall maps, say, port 80 to your real HTTP port. "
+"This can be useful in making the HTTP messages appear even more legit "
+"(without needing to run gnunetd as root due to the use of a privileged port)."
+msgstr ""
+
+#: contrib/config-daemon.scm:1048
+msgid "HTTP transport"
+msgstr ""
+
+#: contrib/config-daemon.scm:1067
+msgid "What is the maximum transfer unit for SMTP?"
+msgstr ""
+
+#: contrib/config-daemon.scm:1079
+msgid ""
+"What is the maximum number of e-mails that gnunetd would be allowed to send "
+"per hour?"
+msgstr ""
+
+#: contrib/config-daemon.scm:1080
+msgid "Use 0 for unlimited"
+msgstr ""
+
+#: contrib/config-daemon.scm:1091
+msgid "Which e-mail address should be used to send e-mail to this peer?"
+msgstr ""
+
+#: contrib/config-daemon.scm:1092
+msgid ""
+"You must make sure that e-mail received at this address is forwarded to the "
+"PIPE which is read by gnunetd. Use the FILTER option to filter e-mail with "
+"procmail and the PIPE option to set the name of the pipe."
+msgstr ""
+
+#: contrib/config-daemon.scm:1103
+msgid ""
+"Which header line should other peers include in e-mails to enable filtering?"
+msgstr ""
+
+#: contrib/config-daemon.scm:1104
+msgid ""
+"You can specify a header line here which can then be used by procmail to "
+"filter GNUnet e-mail from your inbox and forward it to gnunetd."
+msgstr ""
+
+#: contrib/config-daemon.scm:1115
+msgid "What is the filename of the pipe where gnunetd can read its e-mail?"
+msgstr ""
+
+#: contrib/config-daemon.scm:1116
+msgid "Have a look at contrib/dot-procmailrc for an example .procmailrc file."
+msgstr ""
+
+#: contrib/config-daemon.scm:1127
+msgid "What is the name and port of the server for outgoing e-mail?"
+msgstr ""
+
+#: contrib/config-daemon.scm:1128
+msgid "The basic format is HOSTNAME:PORT."
+msgstr ""
+
+#: contrib/config-daemon.scm:1139
+msgid "SMTP transport"
+msgstr ""
+
+#: contrib/config-daemon.scm:1162
+msgid "Which port should be used by the UDP IPv4 transport?"
+msgstr ""
+
+#: contrib/config-daemon.scm:1186
+msgid "What is the maximum transfer unit for UDP?"
+msgstr ""
+
+#: contrib/config-daemon.scm:1198
+msgid "Which IPs are not allowed to connect?"
+msgstr ""
+
+#: contrib/config-daemon.scm:1210
+msgid ""
+"Which IPs are allowed to connect? Leave empty to allow connections from any "
+"IP."
+msgstr ""
+
+#: contrib/config-daemon.scm:1246
+msgid "UDP transport"
+msgstr ""
+
+#: contrib/config-daemon.scm:1268
+msgid "Network interface"
+msgstr ""
+
+#: contrib/config-daemon.scm:1280
+msgid "External IP address (leave empty to try auto-detection)"
+msgstr ""
+
+#: contrib/config-daemon.scm:1292
+msgid "External IPv6 address (leave empty to try auto-detection)"
+msgstr ""
+
+#: contrib/config-daemon.scm:1304
+msgid "Transports"
+msgstr ""
+
+#: contrib/config-daemon.scm:1326
+msgid "What is the maximum number of bytes per second that we may receive?"
+msgstr ""
+
+#: contrib/config-daemon.scm:1338
+msgid "What is the maximum number of bytes per second that we may send?"
+msgstr ""
+
+#: contrib/config-daemon.scm:1350
+msgid "What is the maximum CPU load (percentage)?"
+msgstr ""
+
+#: contrib/config-daemon.scm:1351
+msgid ""
+"The highest tolerable CPU load. Load here always refers to the total system "
+"load, that is it includes CPU utilization by other processes. A value of 50 "
+"means that once your 1 minute-load average goes over 50% non-idle, GNUnet "
+"will try to reduce CPU consumption until the load goes under the threshold. "
+"Reasonable values are typically between 50 and 100. Multiprocessors may use "
+"values above 100."
+msgstr ""
+
+#: contrib/config-daemon.scm:1362
+msgid "What is the maximum IO load (permille)?"
+msgstr ""
+
+#: contrib/config-daemon.scm:1364
+msgid ""
+"The highest tolerable IO load. Load here refers to the percentage of CPU "
+"cycles wasted waiting for IO for the entire system, that is it includes disk "
+"utilization by other processes. A value of 10 means that once the average "
+"number of cycles wasted waiting for IO is more than 10% non-idle, GNUnet "
+"will try to reduce IO until the load goes under the threshold. Reasonable "
+"values are typically between 10 and 75."
+msgstr ""
+
+#: contrib/config-daemon.scm:1375
+msgid "What is the maximum CPU load (hard limit)?"
+msgstr ""
+
+#: contrib/config-daemon.scm:1376
+msgid ""
+"The highest tolerable CPU load. This is the hard limit, so once it is "
+"reached, gnunetd will start to massively drop data to reduce the load. Use "
+"with caution."
+msgstr ""
+
+#: contrib/config-daemon.scm:1387
+msgid "What is the maximum upstream bandwidth (hard limit)?"
+msgstr ""
+
+#: contrib/config-daemon.scm:1388
+msgid ""
+"The limit is given as a percentage of the MAXNETUPBPS limit. Use 100 to "
+"have MAXNETUPBPS be the hard limit. Use zero for no limit."
+msgstr ""
+
+#: contrib/config-daemon.scm:1400
+msgid "What priority should gnunetd use to run?"
+msgstr ""
+
+#: contrib/config-daemon.scm:1401
+msgid ""
+"You can specify priorities like NORMAL, ABOVE NORMAL, BELOW NORMAL, HIGH and "
+"IDLE or a numerical integer value (man nice). The default is IDLE, which "
+"should result in gnunetd only using resources that would otherwise be idle."
+msgstr ""
+
+#: contrib/config-daemon.scm:1413
+msgid "Should we disable random padding (experimental option)?"
+msgstr ""
+
+#: contrib/config-daemon.scm:1425
+msgid "Use basic bandwidth limitation? (YES/NO). If in doubt, say YES."
+msgstr ""
+
+#: contrib/config-daemon.scm:1427
+msgid ""
+"Basic bandwidth limitation (YES) means simply that the bandwidth limits "
+"specified apply to GNUnet and only to GNUnet. If set to YES, you simply "
+"specify the maximum bandwidth (upstream and downstream) that GNUnet is "
+"allowed to use and GNUnet will stick to those limitations. This is useful "
+"if your overall bandwidth is so large that the limit is mostly used to "
+"ensure that enough capacity is left for other applications. Even if you "
+"want to dedicate your entire connection to GNUnet you should not set the "
+"limits to values higher than what you have since GNUnet uses those limits to "
+"determine for example the number of connections to establish (and it would "
+"be inefficient if that computation yields a number that is far too high). \n"
+"\n"
+"While basic bandwidth limitation is simple and always works, there are some "
+"situations where it is not perfect. Suppose you are running another "
+"application which performs a larger download. During that particular time, "
+"it would be nice if GNUnet would throttle its bandwidth consumption "
+"(automatically) and resume using more bandwidth after the download is "
+"complete. This is obviously advanced magic since GNUnet will have to "
+"monitor the behavior of other applications. Another scenario is a monthly "
+"cap on bandwidth imposed by your ISP, which you would want to ensure is "
+"obeyed. Here, you may want GNUnet to monitor the traffic from other "
+"applications to ensure that the combined long-term traffic is within the pre-"
+"set bounds. Note that you should probably not set the bounds tightly since "
+"GNUnet may observe that the bounds are about to be broken but would be "
+"unable to stop other applications from continuing to use bandwidth.\n"
+"\n"
+"If either of these two scenarios applies, set BASICLIMITING to NO. Then set "
+"the bandwidth limits to the COMBINED amount of traffic that is acceptable "
+"for both GNUnet and other applications. GNUnet will then immediately "
+"throttle bandwidth consumption if the short-term average is above the limit, "
+"and it will also try to ensure that the long-term average is below the "
+"limit. Note however that using NO can have the effect of GNUnet (almost) "
+"ceasing operations after other applications perform high-volume downloads "
+"that are beyond the defined limits. GNUnet would reduce consumption until "
+"the long-term limits are again within bounds.\n"
+"\n"
+"NO only works on platforms where GNUnet can monitor the amount of traffic "
+"that the local host puts out on the network. This is only implemented for "
+"Linux and Win32. In order for the code to work, GNUnet needs to know the "
+"specific network interface that is used for the external connection (after "
+"all, the amount of traffic on loopback or on the LAN should never be counted "
+"since it is irrelevant)."
+msgstr ""
+
+#: contrib/config-daemon.scm:1444
+msgid "Network interface to monitor"
+msgstr ""
+
+#: contrib/config-daemon.scm:1445
+msgid ""
+"For which interfaces should we do accounting? GNUnet will evaluate the "
+"total traffic (not only the GNUnet related traffic) and adjust its bandwidth "
+"usage accordingly. You can currently only specify a single interface. GNUnet "
+"will also use this interface to determine the IP to use. Typical values are "
+"eth0, ppp0, eth1, wlan0, etc. 'ifconfig' will tell you what you have. "
+"Never use 'lo', that just won't work. Under Windows, specify the index "
+"number reported by 'gnunet-win-tool -n'."
+msgstr ""
+
+#: contrib/config-daemon.scm:1456
+msgid "Load management"
+msgstr ""
+
+#: contrib/config-daemon.scm:1482 contrib/config-client.scm:413
+msgid "Root node"
+msgstr ""
+
+#: contrib/config-client.scm:153
+msgid "Where should gnunet-clients write their logs?"
+msgstr ""
+
+#: contrib/config-client.scm:185
+msgid "On which machine and port is gnunetd running (for clients)?"
+msgstr ""
+
+#: contrib/config-client.scm:186
+msgid "This is equivalent to the -H option. The format is IP:PORT."
+msgstr ""
+
+#: contrib/config-client.scm:197
+msgid "What is the path to the configuration file for gnunetd?"
+msgstr ""
+
+#: contrib/config-client.scm:198
+msgid "This option is used when clients need to start gnunetd."
+msgstr ""
+
+#: contrib/config-client.scm:210
+msgid "General options"
+msgstr ""
+
+#: contrib/config-client.scm:227
+msgid "Do not add metadata listing the creation time for inserted content"
+msgstr ""
+
+#: contrib/config-client.scm:239
+msgid "Which non-default extractors should GNUnet use for keyword extractors"
+msgstr ""
+
+#: contrib/config-client.scm:240
+msgid ""
+"Specify which additional extractor libraries should be used. gnunet-insert "
+"uses libextractor to extract keywords from files. libextractor can be "
+"dynamically extended to handle additional file formats. If you want to use "
+"more than the default set of extractors, specify additional extractor "
+"libraries here. The format is [[-]LIBRARYNAME[:[-]LIBRARYNAME]*].\n"
+"\n"
+"The default is to use filenames and to break larger words at spaces (and "
+"underscores, etc.). This should be just fine for most people. The '-' "
+"before a library name indicates that this should be executed last and makes "
+"only sense for the split-library."
+msgstr ""
+
+#: contrib/config-client.scm:253
+msgid "How many entries should the URI DB table have?"
+msgstr ""
+
+#: contrib/config-client.scm:254
+msgid ""
+"GNUnet uses two bytes per entry on the disk. This database is used to keep "
+"track of how a particular URI has been used in the past. For example, "
+"GNUnet may remember that a particular URI has been found in a search "
+"previously or corresponds to a file uploaded by the user. This information "
+"can then be used by user-interfaces to filter URI lists, such as search "
+"results. If the database is full, older entries will be discarded. The "
+"default value should be sufficient without causing undue disk utilization."
+msgstr ""
+
+#: contrib/config-client.scm:265
+msgid "Location of the file specifying metadata for the auto-share directory"
+msgstr ""
+
+#: contrib/config-client.scm:277
+msgid ""
+"Location of the file with the PID of any running gnunet-auto-share daemon "
+"process"
+msgstr ""
+
+#: contrib/config-client.scm:289
+msgid "Location of the log file for gnunet-auto-share"
+msgstr ""
+
+#: contrib/config-client.scm:301
+msgid "File-Sharing options"
+msgstr ""
+
+#: contrib/config-client.scm:319
+msgid "Which plugins should be loaded by gnunet-gtk?"
+msgstr ""
+
+#: contrib/config-client.scm:320
+msgid ""
+"Load the about plugin for the about dialog. The daemon plugin allows "
+"starting and stopping of gnunetd and displays information about gnunetd. "
+"The fs plugin provides the file-sharing functionality. The stats plugin "
+"displays various statistics about gnunetd."
+msgstr ""
+
+#: contrib/config-client.scm:331
+msgid "How frequently (in milli-seconds) should the statistics update?"
+msgstr ""
+
+#: contrib/config-client.scm:332
+msgid ""
+"Each pixel in the stats dialog corresponds to the time interval specified "
+"here."
+msgstr ""
+
+#: contrib/config-client.scm:344
+msgid "Do not show thumbnail previews from meta-data in search results"
+msgstr ""
+
+#: contrib/config-client.scm:345
+msgid ""
+"This option is useful for people who maybe offended by some previews or use "
+"gnunet-gtk at work and would like to avoid bad surprises."
+msgstr ""
+
+#: contrib/config-client.scm:356
+msgid "Do not show search results for files that were uploaded by us"
+msgstr ""
+
+#: contrib/config-client.scm:357
+msgid ""
+"This option is useful to eliminate files that the user already has from the "
+"search. Naturally, enabling this option maybe confusing because some "
+"obviously expected search results would no longer show up. This option only "
+"works if the URI_DB_SIZE option under FS is not zero (since the URI DB is "
+"used to determine which files the user is sharing)"
+msgstr ""
+
+#: contrib/config-client.scm:369
+msgid "To which directory should gnunet-gtk save downloads to?"
+msgstr ""
+
+#: contrib/config-client.scm:381
+msgid "Options related to gnunet-gtk"
+msgstr ""
+
+#: contrib/config-client.scm:401
+msgid "Full pathname of GNUnet client HOME directory"
+msgstr ""
+
+#: contrib/config-client.scm:402
+msgid "The directory for GNUnet files that belong to the user."
+msgstr ""
diff --git a/po/LINGUAS b/po/LINGUAS
new file mode 100644
index 000000000..07778ccfd
--- /dev/null
+++ b/po/LINGUAS
@@ -0,0 +1,2 @@
+# set of available languages
+vi de sv es
diff --git a/po/Makefile.in.in b/po/Makefile.in.in
new file mode 100644
index 000000000..5022b8b18
--- /dev/null
+++ b/po/Makefile.in.in
@@ -0,0 +1,403 @@
+# Makefile for PO directory in any package using GNU gettext.
+# Copyright (C) 1995-1997, 2000-2006 by Ulrich Drepper <drepper@gnu.ai.mit.edu>
+#
+# This file can be copied and used freely without restrictions. It can
+# be used in projects which are not available under the GNU General Public
+# License but which still want to provide support for the GNU gettext
+# functionality.
+# Please note that the actual code of GNU gettext is covered by the GNU
+# General Public License and is *not* in the public domain.
+#
+# Origin: gettext-0.16
+
+PACKAGE = @PACKAGE@
+VERSION = @VERSION@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+
+SHELL = /bin/sh
+@SET_MAKE@
+
+srcdir = @srcdir@
+top_srcdir = @top_srcdir@
+VPATH = @srcdir@
+
+prefix = @prefix@
+exec_prefix = @exec_prefix@
+datarootdir = @datarootdir@
+datadir = @datadir@
+localedir = @localedir@
+gettextsrcdir = $(datadir)/gettext/po
+
+INSTALL = @INSTALL@
+INSTALL_DATA = @INSTALL_DATA@
+
+# We use $(mkdir_p).
+# In automake <= 1.9.x, $(mkdir_p) is defined either as "mkdir -p --" or as
+# "$(mkinstalldirs)" or as "$(install_sh) -d". For these automake versions,
+# @install_sh@ does not start with $(SHELL), so we add it.
+# In automake >= 1.10, @mkdir_p@ is derived from ${MKDIR_P}, which is defined
+# either as "/path/to/mkdir -p" or ".../install-sh -c -d". For these automake
+# versions, $(mkinstalldirs) and $(install_sh) are unused.
+mkinstalldirs = $(SHELL) @install_sh@ -d
+install_sh = $(SHELL) @install_sh@
+MKDIR_P = @MKDIR_P@
+mkdir_p = @mkdir_p@
+
+GMSGFMT_ = @GMSGFMT@
+GMSGFMT_no = @GMSGFMT@
+GMSGFMT_yes = @GMSGFMT_015@
+GMSGFMT = $(GMSGFMT_$(USE_MSGCTXT))
+MSGFMT_ = @MSGFMT@
+MSGFMT_no = @MSGFMT@
+MSGFMT_yes = @MSGFMT_015@
+MSGFMT = $(MSGFMT_$(USE_MSGCTXT))
+XGETTEXT_ = @XGETTEXT@
+XGETTEXT_no = @XGETTEXT@
+XGETTEXT_yes = @XGETTEXT_015@
+XGETTEXT = $(XGETTEXT_$(USE_MSGCTXT))
+MSGMERGE = msgmerge
+MSGMERGE_UPDATE = @MSGMERGE@ --update
+MSGINIT = msginit
+MSGCONV = msgconv
+MSGFILTER = msgfilter
+
+POFILES = @POFILES@
+GMOFILES = @GMOFILES@
+UPDATEPOFILES = @UPDATEPOFILES@
+DUMMYPOFILES = @DUMMYPOFILES@
+DISTFILES.common = Makefile.in.in remove-potcdate.sin \
+$(DISTFILES.common.extra1) $(DISTFILES.common.extra2) $(DISTFILES.common.extra3)
+DISTFILES = $(DISTFILES.common) Makevars POTFILES.in \
+$(POFILES) $(GMOFILES) \
+$(DISTFILES.extra1) $(DISTFILES.extra2) $(DISTFILES.extra3)
+
+POTFILES = \
+
+CATALOGS = @CATALOGS@
+
+# Makevars gets inserted here. (Don't remove this line!)
+
+.SUFFIXES:
+.SUFFIXES: .po .gmo .mo .sed .sin .nop .po-create .po-update
+
+.po.mo:
+ @echo "$(MSGFMT) -c -o $@ $<"; \
+ $(MSGFMT) -c -o t-$@ $< && mv t-$@ $@
+
+.po.gmo:
+ @lang=`echo $* | sed -e 's,.*/,,'`; \
+ test "$(srcdir)" = . && cdcmd="" || cdcmd="cd $(srcdir) && "; \
+ echo "$${cdcmd}rm -f $${lang}.gmo && $(GMSGFMT) -c --statistics -o $${lang}.gmo $${lang}.po"; \
+ cd $(srcdir) && rm -f $${lang}.gmo && $(GMSGFMT) -c --statistics -o t-$${lang}.gmo $${lang}.po && mv t-$${lang}.gmo $${lang}.gmo
+
+.sin.sed:
+ sed -e '/^#/d' $< > t-$@
+ mv t-$@ $@
+
+
+all: all-@USE_NLS@
+
+all-yes: stamp-po
+all-no:
+
+# $(srcdir)/$(DOMAIN).pot is only created when needed. When xgettext finds no
+# internationalized messages, no $(srcdir)/$(DOMAIN).pot is created (because
+# we don't want to bother translators with empty POT files). We assume that
+# LINGUAS is empty in this case, i.e. $(POFILES) and $(GMOFILES) are empty.
+# In this case, stamp-po is a nop (i.e. a phony target).
+
+# stamp-po is a timestamp denoting the last time at which the CATALOGS have
+# been loosely updated. Its purpose is that when a developer or translator
+# checks out the package via CVS, and the $(DOMAIN).pot file is not in CVS,
+# "make" will update the $(DOMAIN).pot and the $(CATALOGS), but subsequent
+# invocations of "make" will do nothing. This timestamp would not be necessary
+# if updating the $(CATALOGS) would always touch them; however, the rule for
+# $(POFILES) has been designed to not touch files that don't need to be
+# changed.
+stamp-po: $(srcdir)/$(DOMAIN).pot
+ test ! -f $(srcdir)/$(DOMAIN).pot || \
+ test -z "$(GMOFILES)" || $(MAKE) $(GMOFILES)
+ @test ! -f $(srcdir)/$(DOMAIN).pot || { \
+ echo "touch stamp-po" && \
+ echo timestamp > stamp-poT && \
+ mv stamp-poT stamp-po; \
+ }
+
+# Note: Target 'all' must not depend on target '$(DOMAIN).pot-update',
+# otherwise packages like GCC can not be built if only parts of the source
+# have been downloaded.
+
+# This target rebuilds $(DOMAIN).pot; it is an expensive operation.
+# Note that $(DOMAIN).pot is not touched if it doesn't need to be changed.
+$(DOMAIN).pot-update: $(POTFILES) $(srcdir)/POTFILES.in remove-potcdate.sed
+ if test -n '$(MSGID_BUGS_ADDRESS)' || test '$(PACKAGE_BUGREPORT)' = '@'PACKAGE_BUGREPORT'@'; then \
+ msgid_bugs_address='$(MSGID_BUGS_ADDRESS)'; \
+ else \
+ msgid_bugs_address='$(PACKAGE_BUGREPORT)'; \
+ fi; \
+ $(XGETTEXT) --default-domain=$(DOMAIN) --directory=$(top_srcdir) \
+ --add-comments=TRANSLATORS: $(XGETTEXT_OPTIONS) \
+ --files-from=$(srcdir)/POTFILES.in \
+ --copyright-holder='$(COPYRIGHT_HOLDER)' \
+ --msgid-bugs-address="$$msgid_bugs_address"
+ test ! -f $(DOMAIN).po || { \
+ if test -f $(srcdir)/$(DOMAIN).pot; then \
+ sed -f remove-potcdate.sed < $(srcdir)/$(DOMAIN).pot > $(DOMAIN).1po && \
+ sed -f remove-potcdate.sed < $(DOMAIN).po > $(DOMAIN).2po && \
+ if cmp $(DOMAIN).1po $(DOMAIN).2po >/dev/null 2>&1; then \
+ rm -f $(DOMAIN).1po $(DOMAIN).2po $(DOMAIN).po; \
+ else \
+ rm -f $(DOMAIN).1po $(DOMAIN).2po $(srcdir)/$(DOMAIN).pot && \
+ mv $(DOMAIN).po $(srcdir)/$(DOMAIN).pot; \
+ fi; \
+ else \
+ mv $(DOMAIN).po $(srcdir)/$(DOMAIN).pot; \
+ fi; \
+ }
+
+# This rule has no dependencies: we don't need to update $(DOMAIN).pot at
+# every "make" invocation, only create it when it is missing.
+# Only "make $(DOMAIN).pot-update" or "make dist" will force an update.
+$(srcdir)/$(DOMAIN).pot:
+ $(MAKE) $(DOMAIN).pot-update
+
+# This target rebuilds a PO file if $(DOMAIN).pot has changed.
+# Note that a PO file is not touched if it doesn't need to be changed.
+$(POFILES): $(srcdir)/$(DOMAIN).pot
+ @lang=`echo $@ | sed -e 's,.*/,,' -e 's/\.po$$//'`; \
+ if test -f "$(srcdir)/$${lang}.po"; then \
+ test "$(srcdir)" = . && cdcmd="" || cdcmd="cd $(srcdir) && "; \
+ echo "$${cdcmd}$(MSGMERGE_UPDATE) $${lang}.po $(DOMAIN).pot"; \
+ cd $(srcdir) && $(MSGMERGE_UPDATE) $${lang}.po $(DOMAIN).pot; \
+ else \
+ $(MAKE) $${lang}.po-create; \
+ fi
+
+
+install: install-exec install-data
+install-exec:
+install-data: install-data-@USE_NLS@
+ if test "$(PACKAGE)" = "gettext-tools"; then \
+ $(mkdir_p) $(DESTDIR)$(gettextsrcdir); \
+ for file in $(DISTFILES.common) Makevars.template; do \
+ $(INSTALL_DATA) $(srcdir)/$$file \
+ $(DESTDIR)$(gettextsrcdir)/$$file; \
+ done; \
+ for file in Makevars; do \
+ rm -f $(DESTDIR)$(gettextsrcdir)/$$file; \
+ done; \
+ else \
+ : ; \
+ fi
+install-data-no: all
+install-data-yes: all
+ $(mkdir_p) $(DESTDIR)$(datadir)
+ @catalogs='$(CATALOGS)'; \
+ for cat in $$catalogs; do \
+ cat=`basename $$cat`; \
+ lang=`echo $$cat | sed -e 's/\.gmo$$//'`; \
+ dir=$(localedir)/$$lang/LC_MESSAGES; \
+ $(mkdir_p) $(DESTDIR)$$dir; \
+ if test -r $$cat; then realcat=$$cat; else realcat=$(srcdir)/$$cat; fi; \
+ $(INSTALL_DATA) $$realcat $(DESTDIR)$$dir/$(DOMAIN).mo; \
+ echo "installing $$realcat as $(DESTDIR)$$dir/$(DOMAIN).mo"; \
+ for lc in '' $(EXTRA_LOCALE_CATEGORIES); do \
+ if test -n "$$lc"; then \
+ if (cd $(DESTDIR)$(localedir)/$$lang && LC_ALL=C ls -l -d $$lc 2>/dev/null) | grep ' -> ' >/dev/null; then \
+ link=`cd $(DESTDIR)$(localedir)/$$lang && LC_ALL=C ls -l -d $$lc | sed -e 's/^.* -> //'`; \
+ mv $(DESTDIR)$(localedir)/$$lang/$$lc $(DESTDIR)$(localedir)/$$lang/$$lc.old; \
+ mkdir $(DESTDIR)$(localedir)/$$lang/$$lc; \
+ (cd $(DESTDIR)$(localedir)/$$lang/$$lc.old && \
+ for file in *; do \
+ if test -f $$file; then \
+ ln -s ../$$link/$$file $(DESTDIR)$(localedir)/$$lang/$$lc/$$file; \
+ fi; \
+ done); \
+ rm -f $(DESTDIR)$(localedir)/$$lang/$$lc.old; \
+ else \
+ if test -d $(DESTDIR)$(localedir)/$$lang/$$lc; then \
+ :; \
+ else \
+ rm -f $(DESTDIR)$(localedir)/$$lang/$$lc; \
+ mkdir $(DESTDIR)$(localedir)/$$lang/$$lc; \
+ fi; \
+ fi; \
+ rm -f $(DESTDIR)$(localedir)/$$lang/$$lc/$(DOMAIN).mo; \
+ ln -s ../LC_MESSAGES/$(DOMAIN).mo $(DESTDIR)$(localedir)/$$lang/$$lc/$(DOMAIN).mo 2>/dev/null || \
+ ln $(DESTDIR)$(localedir)/$$lang/LC_MESSAGES/$(DOMAIN).mo $(DESTDIR)$(localedir)/$$lang/$$lc/$(DOMAIN).mo 2>/dev/null || \
+ cp -p $(DESTDIR)$(localedir)/$$lang/LC_MESSAGES/$(DOMAIN).mo $(DESTDIR)$(localedir)/$$lang/$$lc/$(DOMAIN).mo; \
+ echo "installing $$realcat link as $(DESTDIR)$(localedir)/$$lang/$$lc/$(DOMAIN).mo"; \
+ fi; \
+ done; \
+ done
+
+install-strip: install
+
+installdirs: installdirs-exec installdirs-data
+installdirs-exec:
+installdirs-data: installdirs-data-@USE_NLS@
+ if test "$(PACKAGE)" = "gettext-tools"; then \
+ $(mkdir_p) $(DESTDIR)$(gettextsrcdir); \
+ else \
+ : ; \
+ fi
+installdirs-data-no:
+installdirs-data-yes:
+ $(mkdir_p) $(DESTDIR)$(datadir)
+ @catalogs='$(CATALOGS)'; \
+ for cat in $$catalogs; do \
+ cat=`basename $$cat`; \
+ lang=`echo $$cat | sed -e 's/\.gmo$$//'`; \
+ dir=$(localedir)/$$lang/LC_MESSAGES; \
+ $(mkdir_p) $(DESTDIR)$$dir; \
+ for lc in '' $(EXTRA_LOCALE_CATEGORIES); do \
+ if test -n "$$lc"; then \
+ if (cd $(DESTDIR)$(localedir)/$$lang && LC_ALL=C ls -l -d $$lc 2>/dev/null) | grep ' -> ' >/dev/null; then \
+ link=`cd $(DESTDIR)$(localedir)/$$lang && LC_ALL=C ls -l -d $$lc | sed -e 's/^.* -> //'`; \
+ mv $(DESTDIR)$(localedir)/$$lang/$$lc $(DESTDIR)$(localedir)/$$lang/$$lc.old; \
+ mkdir $(DESTDIR)$(localedir)/$$lang/$$lc; \
+ (cd $(DESTDIR)$(localedir)/$$lang/$$lc.old && \
+ for file in *; do \
+ if test -f $$file; then \
+ ln -s ../$$link/$$file $(DESTDIR)$(localedir)/$$lang/$$lc/$$file; \
+ fi; \
+ done); \
+ rm -f $(DESTDIR)$(localedir)/$$lang/$$lc.old; \
+ else \
+ if test -d $(DESTDIR)$(localedir)/$$lang/$$lc; then \
+ :; \
+ else \
+ rm -f $(DESTDIR)$(localedir)/$$lang/$$lc; \
+ mkdir $(DESTDIR)$(localedir)/$$lang/$$lc; \
+ fi; \
+ fi; \
+ fi; \
+ done; \
+ done
+
+# Define this as empty until I found a useful application.
+installcheck:
+
+uninstall: uninstall-exec uninstall-data
+uninstall-exec:
+uninstall-data: uninstall-data-@USE_NLS@
+ if test "$(PACKAGE)" = "gettext-tools"; then \
+ for file in $(DISTFILES.common) Makevars.template; do \
+ rm -f $(DESTDIR)$(gettextsrcdir)/$$file; \
+ done; \
+ else \
+ : ; \
+ fi
+uninstall-data-no:
+uninstall-data-yes:
+ catalogs='$(CATALOGS)'; \
+ for cat in $$catalogs; do \
+ cat=`basename $$cat`; \
+ lang=`echo $$cat | sed -e 's/\.gmo$$//'`; \
+ for lc in LC_MESSAGES $(EXTRA_LOCALE_CATEGORIES); do \
+ rm -f $(DESTDIR)$(localedir)/$$lang/$$lc/$(DOMAIN).mo; \
+ done; \
+ done
+
+check: all
+
+info dvi ps pdf html tags TAGS ctags CTAGS ID:
+
+mostlyclean:
+ rm -f remove-potcdate.sed
+ rm -f stamp-poT
+ rm -f core core.* $(DOMAIN).po $(DOMAIN).1po $(DOMAIN).2po *.new.po
+ rm -fr *.o
+
+clean: mostlyclean
+
+distclean: clean
+ rm -f Makefile Makefile.in POTFILES *.mo
+
+maintainer-clean: distclean
+ @echo "This command is intended for maintainers to use;"
+ @echo "it deletes files that may require special tools to rebuild."
+ rm -f stamp-po $(GMOFILES)
+
+distdir = $(top_builddir)/$(PACKAGE)-$(VERSION)/$(subdir)
+dist distdir:
+ $(MAKE) update-po
+ @$(MAKE) dist2
+# This is a separate target because 'update-po' must be executed before.
+dist2: stamp-po $(DISTFILES)
+ dists="$(DISTFILES)"; \
+ if test "$(PACKAGE)" = "gettext-tools"; then \
+ dists="$$dists Makevars.template"; \
+ fi; \
+ if test -f $(srcdir)/$(DOMAIN).pot; then \
+ dists="$$dists $(DOMAIN).pot stamp-po"; \
+ fi; \
+ if test -f $(srcdir)/ChangeLog; then \
+ dists="$$dists ChangeLog"; \
+ fi; \
+ for i in 0 1 2 3 4 5 6 7 8 9; do \
+ if test -f $(srcdir)/ChangeLog.$$i; then \
+ dists="$$dists ChangeLog.$$i"; \
+ fi; \
+ done; \
+ if test -f $(srcdir)/LINGUAS; then dists="$$dists LINGUAS"; fi; \
+ for file in $$dists; do \
+ if test -f $$file; then \
+ cp -p $$file $(distdir) || exit 1; \
+ else \
+ cp -p $(srcdir)/$$file $(distdir) || exit 1; \
+ fi; \
+ done
+
+update-po: Makefile
+ $(MAKE) $(DOMAIN).pot-update
+ test -z "$(UPDATEPOFILES)" || $(MAKE) $(UPDATEPOFILES)
+ $(MAKE) update-gmo
+
+# General rule for creating PO files.
+
+.nop.po-create:
+ @lang=`echo $@ | sed -e 's/\.po-create$$//'`; \
+ echo "File $$lang.po does not exist. If you are a translator, you can create it through 'msginit'." 1>&2; \
+ exit 1
+
+# General rule for updating PO files.
+
+.nop.po-update:
+ @lang=`echo $@ | sed -e 's/\.po-update$$//'`; \
+ if test "$(PACKAGE)" = "gettext-tools"; then PATH=`pwd`/../src:$$PATH; fi; \
+ tmpdir=`pwd`; \
+ echo "$$lang:"; \
+ test "$(srcdir)" = . && cdcmd="" || cdcmd="cd $(srcdir) && "; \
+ echo "$${cdcmd}$(MSGMERGE) $$lang.po $(DOMAIN).pot -o $$lang.new.po"; \
+ cd $(srcdir); \
+ if $(MSGMERGE) $$lang.po $(DOMAIN).pot -o $$tmpdir/$$lang.new.po; then \
+ if cmp $$lang.po $$tmpdir/$$lang.new.po >/dev/null 2>&1; then \
+ rm -f $$tmpdir/$$lang.new.po; \
+ else \
+ if mv -f $$tmpdir/$$lang.new.po $$lang.po; then \
+ :; \
+ else \
+ echo "msgmerge for $$lang.po failed: cannot move $$tmpdir/$$lang.new.po to $$lang.po" 1>&2; \
+ exit 1; \
+ fi; \
+ fi; \
+ else \
+ echo "msgmerge for $$lang.po failed!" 1>&2; \
+ rm -f $$tmpdir/$$lang.new.po; \
+ fi
+
+$(DUMMYPOFILES):
+
+update-gmo: Makefile $(GMOFILES)
+ @:
+
+Makefile: Makefile.in.in Makevars $(top_builddir)/config.status @POMAKEFILEDEPS@
+ cd $(top_builddir) \
+ && $(SHELL) ./config.status $(subdir)/$@.in po-directories
+
+force:
+
+# Tell versions [3.59,3.63) of GNU make not to export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:
diff --git a/po/Makevars b/po/Makevars
new file mode 100644
index 000000000..085957181
--- /dev/null
+++ b/po/Makevars
@@ -0,0 +1,41 @@
+# Makefile variables for PO directory in any package using GNU gettext.
+
+# Usually the message domain is the same as the package name.
+DOMAIN = $(PACKAGE)
+
+# These two variables depend on the location of this directory.
+subdir = po
+top_builddir = ..
+
+# These options get passed to xgettext.
+XGETTEXT_OPTIONS = --keyword=_ --keyword=N_
+
+# This is the copyright holder that gets inserted into the header of the
+# $(DOMAIN).pot file. Set this to the copyright holder of the surrounding
+# package. (Note that the msgstr strings, extracted from the package's
+# sources, belong to the copyright holder of the package.) Translators are
+# expected to transfer the copyright for their translations to this person
+# or entity, or to disclaim their copyright. The empty string stands for
+# the public domain; in this case the translators are expected to disclaim
+# their copyright.
+COPYRIGHT_HOLDER = Christian Grothoff
+
+# This is the email address or URL to which the translators shall report
+# bugs in the untranslated strings:
+# - Strings which are not entire sentences, see the maintainer guidelines
+# in the GNU gettext documentation, section 'Preparing Strings'.
+# - Strings which use unclear terms or require additional context to be
+# understood.
+# - Strings which make invalid assumptions about notation of date, time or
+# money.
+# - Pluralisation problems.
+# - Incorrect English spelling.
+# - Incorrect formatting.
+# It can be your email address, or a mailing list address where translators
+# can write to without being subscribed, or the URL of a web page through
+# which the translators can contact you.
+MSGID_BUGS_ADDRESS = gnunet-developers@mail.gnu.org
+
+# This is the list of locale categories, beyond LC_MESSAGES, for which the
+# message catalogs shall be used. It is usually empty.
+EXTRA_LOCALE_CATEGORIES =
diff --git a/po/Makevars.template b/po/Makevars.template
new file mode 100644
index 000000000..32692ab4b
--- /dev/null
+++ b/po/Makevars.template
@@ -0,0 +1,41 @@
+# Makefile variables for PO directory in any package using GNU gettext.
+
+# Usually the message domain is the same as the package name.
+DOMAIN = $(PACKAGE)
+
+# These two variables depend on the location of this directory.
+subdir = po
+top_builddir = ..
+
+# These options get passed to xgettext.
+XGETTEXT_OPTIONS = --keyword=_ --keyword=N_
+
+# This is the copyright holder that gets inserted into the header of the
+# $(DOMAIN).pot file. Set this to the copyright holder of the surrounding
+# package. (Note that the msgstr strings, extracted from the package's
+# sources, belong to the copyright holder of the package.) Translators are
+# expected to transfer the copyright for their translations to this person
+# or entity, or to disclaim their copyright. The empty string stands for
+# the public domain; in this case the translators are expected to disclaim
+# their copyright.
+COPYRIGHT_HOLDER = Free Software Foundation, Inc.
+
+# This is the email address or URL to which the translators shall report
+# bugs in the untranslated strings:
+# - Strings which are not entire sentences, see the maintainer guidelines
+# in the GNU gettext documentation, section 'Preparing Strings'.
+# - Strings which use unclear terms or require additional context to be
+# understood.
+# - Strings which make invalid assumptions about notation of date, time or
+# money.
+# - Pluralisation problems.
+# - Incorrect English spelling.
+# - Incorrect formatting.
+# It can be your email address, or a mailing list address where translators
+# can write to without being subscribed, or the URL of a web page through
+# which the translators can contact you.
+MSGID_BUGS_ADDRESS =
+
+# This is the list of locale categories, beyond LC_MESSAGES, for which the
+# message catalogs shall be used. It is usually empty.
+EXTRA_LOCALE_CATEGORIES =
diff --git a/po/POTFILES.in b/po/POTFILES.in
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/po/POTFILES.in
diff --git a/po/Rules-quot b/po/Rules-quot
new file mode 100644
index 000000000..9c2a995e3
--- /dev/null
+++ b/po/Rules-quot
@@ -0,0 +1,47 @@
+# Special Makefile rules for English message catalogs with quotation marks.
+
+DISTFILES.common.extra1 = quot.sed boldquot.sed en@quot.header en@boldquot.header insert-header.sin Rules-quot
+
+.SUFFIXES: .insert-header .po-update-en
+
+en@quot.po-create:
+ $(MAKE) en@quot.po-update
+en@boldquot.po-create:
+ $(MAKE) en@boldquot.po-update
+
+en@quot.po-update: en@quot.po-update-en
+en@boldquot.po-update: en@boldquot.po-update-en
+
+.insert-header.po-update-en:
+ @lang=`echo $@ | sed -e 's/\.po-update-en$$//'`; \
+ if test "$(PACKAGE)" = "gettext"; then PATH=`pwd`/../src:$$PATH; GETTEXTLIBDIR=`cd $(top_srcdir)/src && pwd`; export GETTEXTLIBDIR; fi; \
+ tmpdir=`pwd`; \
+ echo "$$lang:"; \
+ ll=`echo $$lang | sed -e 's/@.*//'`; \
+ LC_ALL=C; export LC_ALL; \
+ cd $(srcdir); \
+ 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 \
+ if cmp $$lang.po $$tmpdir/$$lang.new.po >/dev/null 2>&1; then \
+ rm -f $$tmpdir/$$lang.new.po; \
+ else \
+ if mv -f $$tmpdir/$$lang.new.po $$lang.po; then \
+ :; \
+ else \
+ echo "creation of $$lang.po failed: cannot move $$tmpdir/$$lang.new.po to $$lang.po" 1>&2; \
+ exit 1; \
+ fi; \
+ fi; \
+ else \
+ echo "creation of $$lang.po failed!" 1>&2; \
+ rm -f $$tmpdir/$$lang.new.po; \
+ fi
+
+en@quot.insert-header: insert-header.sin
+ sed -e '/^#/d' -e 's/HEADER/en@quot.header/g' $(srcdir)/insert-header.sin > en@quot.insert-header
+
+en@boldquot.insert-header: insert-header.sin
+ sed -e '/^#/d' -e 's/HEADER/en@boldquot.header/g' $(srcdir)/insert-header.sin > en@boldquot.insert-header
+
+mostlyclean: mostlyclean-quot
+mostlyclean-quot:
+ rm -f *.insert-header
diff --git a/po/boldquot.sed b/po/boldquot.sed
new file mode 100644
index 000000000..4b937aa51
--- /dev/null
+++ b/po/boldquot.sed
@@ -0,0 +1,10 @@
+s/"\([^"]*\)"/ÔÇť\1ÔÇŁ/g
+s/`\([^`']*\)'/ÔÇś\1ÔÇÖ/g
+s/ '\([^`']*\)' / ÔÇś\1ÔÇÖ /g
+s/ '\([^`']*\)'$/ ÔÇś\1ÔÇÖ/g
+s/^'\([^`']*\)' /ÔÇś\1ÔÇÖ /g
+s/ÔÇťÔÇŁ/""/g
+s/ÔÇť/ÔÇť/g
+s/ÔÇŁ/ÔÇŁ/g
+s/ÔÇś/ÔÇś/g
+s/ÔÇÖ/ÔÇÖ/g
diff --git a/po/de.gmo b/po/de.gmo
new file mode 100644
index 000000000..c3cd1fde4
--- /dev/null
+++ b/po/de.gmo
Binary files differ
diff --git a/po/de.po b/po/de.po
new file mode 100644
index 000000000..b1e089b98
--- /dev/null
+++ b/po/de.po
@@ -0,0 +1,7387 @@
+# German translations for GNUnet package
+# German messages for GNUnet.
+# Copyright (C) 2004, 2005 Christian Grothoff
+# This file is distributed under the same license as the GNUnet package.
+# Christian Grothoff <christian@grothoff.org>, 2004, 2005.
+msgid ""
+msgstr ""
+"Project-Id-Version: GNUnet 0.7.0b\n"
+"Report-Msgid-Bugs-To: gnunet-developers@mail.gnu.org\n"
+"POT-Creation-Date: 2009-01-08 10:55-0700\n"
+"PO-Revision-Date: 2006-03-17 21:37+0100\n"
+"Last-Translator: Nils Durner <durner@gnunet.org>\n"
+"Language-Team: German <de@li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+
+#: src/setup/ncurses/wizard_curs.c:72 src/setup/lib/wizard_util.c:155
+#: src/setup/lib/wizard_util.c:210
+msgid "Error"
+msgstr "Fehler"
+
+#: src/setup/ncurses/wizard_curs.c:80
+msgid "Help"
+msgstr "Hilfe"
+
+#: src/setup/ncurses/wizard_curs.c:87
+#, fuzzy
+msgid "Error!"
+msgstr "Fehler"
+
+#: src/setup/ncurses/wizard_curs.c:101 src/applications/vpn/cs.c:94
+msgid "No"
+msgstr "Nein"
+
+#: src/setup/ncurses/wizard_curs.c:102 src/applications/vpn/cs.c:94
+msgid "Yes"
+msgstr "Ja"
+
+#: src/setup/ncurses/wizard_curs.c:118 src/setup/ncurses/wizard_curs.c:183
+#: src/setup/ncurses/wizard_curs.c:299 src/setup/ncurses/mconf.c:189
+#: src/setup/ncurses/mconf.c:285 src/setup/ncurses/mconf.c:365
+#: src/setup/ncurses/mconf.c:456
+msgid "Internal error! (Choice invalid?)"
+msgstr ""
+
+#: src/setup/ncurses/wizard_curs.c:150
+#, fuzzy
+msgid "Abort"
+msgstr "_├╝ber"
+
+#: src/setup/ncurses/wizard_curs.c:151
+#, fuzzy
+msgid "Ok"
+msgstr "k"
+
+#: src/setup/ncurses/wizard_curs.c:218 src/setup/ncurses/wizard_curs.c:284
+#: src/setup/ncurses/wizard_curs.c:425
+msgid "GNUnet configuration"
+msgstr "GNUnet Konfiguration"
+
+#: src/setup/ncurses/wizard_curs.c:220
+msgid ""
+"Welcome to GNUnet!\n"
+"\n"
+"This assistant will ask you a few basic questions in order to configure "
+"GNUnet.\n"
+"\n"
+"Please visit our homepage at\n"
+"\thttp://gnunet.org/\n"
+"and join our community at\n"
+"\thttp://gnunet.org/drupal/\n"
+"\n"
+"Have a lot of fun,\n"
+"\n"
+"the GNUnet team"
+msgstr ""
+"Willkommen bei GNUnet!\n"
+"\n"
+"Dieser Assistent wird Ihnen einige grundlegende Fragen stellen, um GNUnet zu "
+"konfigurieren.\n"
+"\n"
+"Bitte besuchen Sie unsere Homepage\n"
+"\thttp://gnunet.org\n"
+"und schlie├čen Sie sich unserer Community an:\n"
+"\thttps://gnunet.org/drupal/\n"
+"\n"
+"Viel Spa├č,\n"
+"\n"
+"das GNUnet-Team"
+
+#: src/setup/ncurses/wizard_curs.c:286
+msgid ""
+"Choose the network interface that connects your computer to the internet "
+"from the list below."
+msgstr ""
+"W├Ąhlen Sie das Netzwerkger├Ąt, das Ihren Computer mit dem Internet verbindet, "
+"aus unten stehender Liste."
+
+#: src/setup/ncurses/wizard_curs.c:304 src/setup/ncurses/wizard_curs.c:318
+msgid ""
+"The \"Network interface\" is the device that connects your computer to the "
+"internet. This is usually a modem, an ISDN card or a network card in case "
+"you are using DSL."
+msgstr ""
+"Das \"Netzwerkger├Ąt\" ist das Ger├Ąt, das Ihren Computer mit dem Internet "
+"verbindet. Dies ist ├╝blicherweise ein Modem, eine ISDN-Karte oder eine "
+"Netzwerkkarte falls Sie DSL nutzen."
+
+#: src/setup/ncurses/wizard_curs.c:315
+#, fuzzy
+msgid "Network configuration: interface"
+msgstr "Netzwerkger├Ąt:"
+
+#: src/setup/ncurses/wizard_curs.c:317
+msgid ""
+"What is the name of the network interface that connects your computer to the "
+"Internet?"
+msgstr ""
+"Was ist der Name des Netzwerkger├Ątes, das Ihren Computer mit dem Internet "
+"verbindet?"
+
+#: src/setup/ncurses/wizard_curs.c:328
+#, fuzzy
+msgid "Network configuration: IP"
+msgstr "GNUnet Konfiguration"
+
+#: src/setup/ncurses/wizard_curs.c:330
+#, fuzzy
+msgid "What is this computer's public IP address or hostname?"
+msgstr ""
+"Wie hei├čt die ├Âffentliche IP-Adresse oder der ├Âffentliche Name dieses "
+"Computers?\n"
+"Wenn Sie nicht sicher sind, lassen Sie dieses Feld leer."
+
+#: src/setup/ncurses/wizard_curs.c:331
+#, fuzzy
+msgid ""
+"If your provider always assigns the same IP-Address to you (a \"static\" IP-"
+"Address), enter it into the \"IP-Address\" field. If your IP-Address changes "
+"every now and then (\"dynamic\" IP-Address) but there's a hostname that "
+"always points to your actual IP-Address (\"Dynamic DNS\"), you can also "
+"enter it here.\n"
+"If left empty, GNUnet will try to automatically detect the IP.\n"
+"You can specify a hostname, GNUnet will then use DNS to resolve it.\n"
+"If in doubt, leave this empty."
+msgstr ""
+"Wenn Ihr Provider Ihnen immer die gleiche IP-Adresse zuweist (eine "
+"\"statische\" IP-Adresse), so geben Sie diese in das \"IP-Adresse\"-Feld "
+"ein. Wenn sich Ihre IP-Adresse immer wieder ├Ąndert (\"dynamische\" IP-"
+"Adresse), es jedoch einen Rechnernamen gibt, der immer auf Ihre aktuelle IP-"
+"Adresse verweist, so k├Ânnen Sie diesen ebenfalls eintragen.\n"
+"Wenn Sie nicht sicher sind, so k├Ânnen Sie das Feld leer lassen. GNUnet wird "
+"dann versuchen, Ihre IP-Adresse automatisch zu bestimmen."
+
+#: src/setup/ncurses/wizard_curs.c:346
+#, fuzzy
+msgid "Bandwidth configuration: upload"
+msgstr "GNUnet Konfiguration"
+
+#: src/setup/ncurses/wizard_curs.c:348
+#, fuzzy
+msgid "How much upstream bandwidth (in bytes/s) may be used?"
+msgstr "Wieviel Upstream (Bytes/s) darf verwendet werden?"
+
+#: src/setup/ncurses/wizard_curs.c:349
+#, fuzzy
+msgid ""
+"You can limit GNUnet's resource usage here.\n"
+"\n"
+"The \"upstream\" is the data channel through which data is *sent* to the "
+"internet. The limit is the maximum amount which GNUnet is allowed to use. If "
+"you have a flatrate, you can set it to the maximum speed of your internet "
+"connection. You should not use a value that is higher than what your actual "
+"connection allows."
+msgstr ""
+"Hier k├Ânnen Sie GNUnets Ressourcenverwendung einschr├Ąnken.\n"
+"\n"
+"Der \"Upstream\" ist der Datenkanal, durch den Daten an das Internet "
+"*gesendet* werden. Das Limit ist entweder das gesamte Maximum f├╝r diesem "
+"Computer oder wieviel GNUnet selbst verwenden darf. Dies k├Ânnen Sie sp├Ąter "
+"festlegen. Wenn Sie eine Flatrate haben, k├Ânnen Sie die maximale "
+"Geschwindigkeit Ihrer Internetverbindung angeben."
+
+#: src/setup/ncurses/wizard_curs.c:361
+#, fuzzy
+msgid "Bandwidth configuration: download"
+msgstr "GNUnet Konfiguration"
+
+#: src/setup/ncurses/wizard_curs.c:363
+#, fuzzy
+msgid "How much downstream bandwidth (in bytes/s) may be used?"
+msgstr "Wieviel Downstream (Bytes/s) darf verwendet werden?"
+
+#: src/setup/ncurses/wizard_curs.c:364
+#, fuzzy
+msgid ""
+"You can limit GNUnet's resource usage here.\n"
+"\n"
+"The \"downstream\" is the data channel through which data is *received* from "
+"the internet. The limit is the maximum amount which GNUnet is allowed to "
+"use. If you have a flatrate, you can set it to the maximum speed of your "
+"internet connection. You should not use a value that is higher than what "
+"your actual connection allows."
+msgstr ""
+"Hier k├Ânnen Sie GNUnets Ressourcenverwendung einschr├Ąnken.\n"
+"\n"
+"Der \"Downstream\" ist der Datenkanal, durch den Daten vom Internet "
+"*empfangen* werden. Das Limit ist entweder das gesamte Maximum f├╝r diesem "
+"Computer oder wieviel GNUnet selbst verwenden darf. Dies k├Ânnen Sie sp├Ąter "
+"festlegen. Wenn Sie eine Flatrate haben, k├Ânnen Sie die maximale "
+"Geschwindigkeit Ihrer Internetverbindung angeben."
+
+#: src/setup/ncurses/wizard_curs.c:376
+#, fuzzy
+msgid "Quota configuration"
+msgstr "GNUnet Konfiguration"
+
+#: src/setup/ncurses/wizard_curs.c:377
+msgid "What is the maximum size of the datastore in MB?"
+msgstr ""
+
+#: src/setup/ncurses/wizard_curs.c:378
+#, fuzzy
+msgid ""
+"The GNUnet datastore contains all content that GNUnet needs to store "
+"(indexed, inserted and migrated content)."
+msgstr ""
+"Was ist die maximale Gr├Â├če des GNUnet Datenspeichers (in MB)?\n"
+"Der GNUnet Datenspeicher enth├Ąlt alle Daten, die GNUnet erzeugt (Indexdaten, "
+"eingef├╝gte und migrierte Inhalte)."
+
+#: src/setup/ncurses/wizard_curs.c:390
+#, fuzzy
+msgid "Daemon configuration: user account"
+msgstr "Fehler beim Anlegen des Benutzerkontos:"
+
+#: src/setup/ncurses/wizard_curs.c:391
+msgid "As which user should gnunetd be run?"
+msgstr ""
+
+#: src/setup/ncurses/wizard_curs.c:393
+#, fuzzy
+msgid ""
+"For security reasons, it is a good idea to let this setup create a new user "
+"account under which the GNUnet service is started at system startup.\n"
+"\n"
+"However, GNUnet may not be able to access files other than its own. This "
+"includes files you want to publish in GNUnet. You'll have to grant read "
+"permissions to the user specified below.\n"
+"\n"
+"Leave the field empty to run GNUnet with system privileges.\n"
+msgstr ""
+"Geben Sie den Benutzer an, dem der GNUnet Dienst geh├Âren soll.\n"
+"\n"
+"Aus Sicherheitsgr├╝nden ist es eine gute Idee, dieses Setup ein neues "
+"Benutzerkonto anlegen zu lassen, unter dem der GNUnet Dienst beim "
+"Systemstart l├Ąuft.\n"
+"\n"
+"Nat├╝rlich kann GNUnet dann nur auf seine eigenen Dateien zugreifen. Dies "
+"betrifft auch Dateien, die Sie im GNUnet ver├Âffentlichen m├Âchten. Sie m├╝ssen "
+"dann dem unten angegebenen Benutzerkonto zuerst Leseberechtigungen geben.\n"
+"\n"
+"Lassen Sie dieses Feld leer, wenn Sie GNUnet mit Systemprivilegien laufen "
+"lassen m├Âchten.\n"
+"\n"
+"GNUnet Benutzer:"
+
+#: src/setup/ncurses/wizard_curs.c:410
+msgid "Daemon configuration: group account"
+msgstr ""
+
+#: src/setup/ncurses/wizard_curs.c:411
+msgid "As which group should gnunetd be run?"
+msgstr ""
+
+#: src/setup/ncurses/wizard_curs.c:413
+#, fuzzy
+msgid ""
+"For security reasons, it is a good idea to let this setup create a new group "
+"for the chosen user account.\n"
+"\n"
+"You can also specify a already existent group here.\n"
+"\n"
+"Only members of this group will be allowed to start and stop the the GNUnet "
+"server and have access to GNUnet server data.\n"
+msgstr ""
+"Definieren Sie eine Gruppe, der der GNUnet Dienst geh├Ârt.\n"
+"\n"
+"Aus Sicherheitsgr├╝nden ist es eine gute Idee, dieses Setup eine neue Gruppe "
+"f├╝r das gew├Ąhlte Benutzerkonto anlegen zu lassen.\n"
+"\n"
+"Sie k├Ânnen hier auch eine bestehende Gruppe angeben.\n"
+"\n"
+"Nur Mitglieder dieser Gruppe d├╝rfen den GNUnet Server starten und anhalten "
+"und haben Zugriff auf die Daten des GNUnet Servers.\n"
+"\n"
+"GNUnet Gruppe:"
+
+#: src/setup/ncurses/wizard_curs.c:427
+msgid "Do you want to automatically launch GNUnet as a system service?"
+msgstr ""
+
+#: src/setup/ncurses/wizard_curs.c:429
+#, fuzzy
+msgid ""
+"If you say \"yes\" here, the GNUnet background process will be automatically "
+"started when you turn on your computer. If you say \"no\" here, you have to "
+"launch GNUnet yourself each time you want to use it."
+msgstr ""
+"M├Âchten Sie GNUnet als Systemdienst starten?\n"
+"\n"
+"Wenn Sie hier \"Ja\" sagen, so wird der GNUnet Hintergrundprozess jedesmal "
+"automatisch gestartet, wenn Sie Ihren Computer einschalten. Wenn Sie hier "
+"\"Nein\" sagen, so m├╝ssen Sie GNUnet jedesmal selbst starten, wenn Sie es "
+"verwenden m├Âchten."
+
+#: src/setup/ncurses/wizard_curs.c:452 src/setup/gtk/wizard_gtk.c:414
+#, c-format
+msgid "Unable to save configuration file `%s':"
+msgstr "Fehler beim Speichern der Konfigurationsdatei `%s':"
+
+#: src/setup/ncurses/wizard_curs.c:472
+#, fuzzy
+msgid "Unable to create user account for daemon."
+msgstr "Fehler beim Anlegen des Benutzerkontos:"
+
+#: src/setup/ncurses/wizard_curs.c:483
+msgid "Unable to setup autostart for daemon."
+msgstr ""
+
+#: src/setup/ncurses/wizard_curs.c:498
+#, fuzzy
+msgid "Save configuration?"
+msgstr "GNUnet Konfiguration"
+
+#: src/setup/ncurses/wizard_curs.c:499
+#, fuzzy
+msgid "Save configuration now?"
+msgstr "GNUnet Konfiguration"
+
+#: src/setup/ncurses/wizard_curs.c:539 src/setup/ncurses/mconf.c:500
+#, fuzzy
+msgid "GNUnet Configuration"
+msgstr "GNUnet Konfiguration"
+
+#: src/setup/ncurses/wizard_curs.c:543
+msgid "Back"
+msgstr "Zur├╝ck"
+
+#: src/setup/ncurses/mconf.c:96
+msgid "Exit"
+msgstr ""
+
+#: src/setup/ncurses/mconf.c:99
+msgid "Up"
+msgstr "Oben"
+
+#: src/setup/ncurses/mconf.c:102
+msgid "Cancel"
+msgstr "Abbrechen"
+
+#: src/setup/ncurses/mconf.c:221 src/setup/ncurses/mconf.c:408
+msgid "Internal error! (Value invalid?)"
+msgstr ""
+
+#: src/setup/ncurses/mconf.c:398
+msgid "Invalid input, expecting floating point value."
+msgstr ""
+
+#: src/setup/ncurses/mconf.c:439
+msgid "Invalid input, expecting integer."
+msgstr ""
+
+#: src/setup/ncurses/mconf.c:446
+msgid "Value is not in legal range."
+msgstr ""
+
+#: src/setup/ncurses/mconf.c:512 src/setup/text/conf.c:569
+#, fuzzy, c-format
+msgid "Configuration unchanged, no need to save.\n"
+msgstr ""
+"Konfiguration oder die GNUnet Version hat sich ge├Ąndert. Sie m├╝ssen `%s' "
+"ausf├╝hren!\n"
+
+#: src/setup/ncurses/mconf.c:518
+#, fuzzy
+msgid "Do you wish to save your new configuration?"
+msgstr "M├Âchten Sie Ihre Einstellungen speichern?"
+
+#: src/setup/ncurses/mconf.c:532
+#, fuzzy, c-format
+msgid ""
+"\n"
+"End of configuration.\n"
+msgstr " gconfig\tGTK Konfiguration\n"
+
+#: src/setup/ncurses/mconf.c:537
+#, fuzzy, c-format
+msgid ""
+"\n"
+"Your configuration changes were NOT saved.\n"
+msgstr "Konfigurationsdatei `%s' wurde erzeugt.\n"
+
+#: src/setup/gnunet-win-tool.c:52
+msgid "list all network adapters"
+msgstr ""
+
+#: src/setup/gnunet-win-tool.c:55
+msgid "install GNUnet as Windows service"
+msgstr ""
+
+#: src/setup/gnunet-win-tool.c:58
+msgid "uninstall GNUnet service"
+msgstr ""
+
+#: src/setup/gnunet-win-tool.c:61
+msgid "increase the maximum number of TCP/IP connections"
+msgstr ""
+
+#: src/setup/gnunet-win-tool.c:64
+msgid "display a file's hash value"
+msgstr ""
+
+#: src/setup/gnunet-win-tool.c:125
+#, c-format
+msgid "GNUnet service installed successfully.\n"
+msgstr "Der GNUnet Dienst wurde erfolgreich installiert.\n"
+
+#: src/setup/gnunet-win-tool.c:128 src/setup/gnunet-win-tool.c:156
+#, c-format
+msgid "This version of Windows doesn't support services.\n"
+msgstr "Diese Version von Windows unterst├╝tzt keine Dienste.\n"
+
+#: src/setup/gnunet-win-tool.c:132 src/setup/gnunet-win-tool.c:160
+#, c-format
+msgid "Error: can't open Service Control Manager: %s\n"
+msgstr "Fehler: der Dienstemanager konnte nicht ge├Âffnet werden: %s\n"
+
+#: src/setup/gnunet-win-tool.c:137
+#, c-format
+msgid "Error: can't create service: %s\n"
+msgstr "Fehler: Dienst konnte nicht angelegt werden: %s\n"
+
+#: src/setup/gnunet-win-tool.c:140 src/setup/gnunet-win-tool.c:172
+#, c-format
+msgid "Unknown error.\n"
+msgstr "Unbekannter Fehler.\n"
+
+#: src/setup/gnunet-win-tool.c:153
+#, c-format
+msgid "Service deleted.\n"
+msgstr "Dienst gel├Âscht.\n"
+
+#: src/setup/gnunet-win-tool.c:165
+#, c-format
+msgid "Error: can't access service: %s\n"
+msgstr "Fehler: auf den Dienst konnte nicht zugegriffen werden: %s\n"
+
+#: src/setup/gnunet-win-tool.c:169
+#, c-format
+msgid "Error: can't delete service: %s\n"
+msgstr "Fehler: Dienst konnte nicht gel├Âscht werden: %s\n"
+
+#: src/setup/gtk/ngconf.c:389
+#, fuzzy
+msgid "Configuration saved."
+msgstr "GNUnet Konfiguration"
+
+#: src/setup/gtk/ngconf.c:399
+#, fuzzy
+msgid "Failed to save configuration."
+msgstr "Fehler beim Speichern der Konfiguration!"
+
+#: src/setup/gtk/ngconf.c:424
+#, fuzzy
+msgid "Configuration changed. Save?"
+msgstr ""
+"Konfiguration oder die GNUnet Version hat sich ge├Ąndert. Sie m├╝ssen `%s' "
+"ausf├╝hren!\n"
+
+#: src/setup/gtk/ngconf.c:437
+#, fuzzy
+msgid "Error saving configuration."
+msgstr "Fehler beim Speichern der Konfiguration!"
+
+#: src/setup/gtk/wizard_gtk.c:141
+#, fuzzy
+msgid "(unknown connection)"
+msgstr "Netzwerkverbindung"
+
+#: src/setup/gtk/wizard_gtk.c:438
+#, fuzzy
+msgid "Do you want to save the new configuration?"
+msgstr "M├Âchten Sie Ihre Einstellungen speichern?"
+
+#: src/setup/gtk/wizard_gtk.c:470
+msgid "Unable to create user account:"
+msgstr "Fehler beim Anlegen des Benutzerkontos:"
+
+#: src/setup/gtk/wizard_gtk.c:480
+msgid "Unable to change startup process:"
+msgstr "Startproze├č konnte nicht ge├Ąndert werden:"
+
+#: src/setup/gtk/wizard_gtk.c:495
+msgid ""
+"Running gnunet-update failed.\n"
+"This maybe due to insufficient permissions, please check your "
+"configuration.\n"
+"Finally, run gnunet-update manually."
+msgstr ""
+
+#: src/setup/gnunet-setup.c:65
+#, c-format
+msgid "Can only set one option per invocation.\n"
+msgstr ""
+
+#: src/setup/gnunet-setup.c:73
+#, c-format
+msgid ""
+"Invalid syntax, argument to 'set' must have the format SECTION:"
+"OPTION=VALUE.\n"
+msgstr ""
+
+#: src/setup/gnunet-setup.c:87
+#, c-format
+msgid "Can only display one option per invocation.\n"
+msgstr ""
+
+#: src/setup/gnunet-setup.c:94
+#, c-format
+msgid ""
+"Invalid syntax, argument to 'get' must have the format SECTION:OPTION.\n"
+msgstr ""
+
+#: src/setup/gnunet-setup.c:108
+msgid "generate configuration for gnunetd, the GNUnet daemon"
+msgstr "Generiere Konfiguration f├╝r gnunetd, den GNUnet Daemon"
+
+#: src/setup/gnunet-setup.c:111 src/setup/gnunet-setup.c:127
+#: src/server/gnunet-update.c:268
+msgid "print a value from the configuration file to stdout"
+msgstr ""
+"Einen Wert aus der Konfigurationsdatei auf der Standardausgabe ausgeben"
+
+#: src/setup/gnunet-setup.c:113 src/setup/gnunet-setup.c:129
+msgid "Tool to setup GNUnet."
+msgstr "Werkzeug f├╝r die Einrichtung von GNUnet."
+
+#: src/setup/gnunet-setup.c:115 src/setup/gnunet-setup.c:131
+#, fuzzy
+msgid "update a value in the configuration file"
+msgstr ""
+"Einen Wert aus der Konfigurationsdatei auf der Standardausgabe ausgeben"
+
+#: src/setup/gnunet-setup.c:338
+#, fuzzy, c-format
+msgid "Too many arguments.\n"
+msgstr "Ung├╝ltige Kommandozeilen Parameter.\n"
+
+#: src/setup/gnunet-setup.c:344
+#, fuzzy
+msgid "No interface specified, using default.\n"
+msgstr "Keine Oberfl├Ąche angegeben, verwende Standard\n"
+
+#: src/setup/gnunet-setup.c:392
+#, fuzzy, c-format
+msgid "Configuration file `%s' must be a filename (but is a directory).\n"
+msgstr ""
+"Konfigurationsdatei `%s' nicht gefunden. Bitte f├╝hren Sie gnunet-setup aus!\n"
+
+#: src/setup/gnunet-setup.c:439
+#, fuzzy, c-format
+msgid "Undefined option.\n"
+msgstr "Weitere Einstellungen"
+
+#: src/setup/gnunet-setup.c:496
+#, fuzzy, c-format
+msgid "`%s' is not available.\n"
+msgstr "`%s' ist nicht verf├╝gbar."
+
+#: src/setup/gnunet-setup.c:516
+#, fuzzy, c-format
+msgid "Unknown operation '%s'.\n"
+msgstr "Unbekannte Operation `%s'\n"
+
+#: src/setup/gnunet-setup.c:517 src/util/getopt/getopt.c:1072
+#, c-format
+msgid "Use --help to get a list of options.\n"
+msgstr "Verwenden Sie --help, um eine Liste der Optionen zu erhalten.\n"
+
+#: src/setup/text/conf.c:79
+#, fuzzy
+msgid "yes"
+msgstr "Ja"
+
+#: src/setup/text/conf.c:80
+msgid "no"
+msgstr ""
+
+#: src/setup/text/conf.c:106
+#, c-format
+msgid "\tEnter yes (%s), no (%s) or help (%s): "
+msgstr ""
+
+#: src/setup/text/conf.c:115
+msgid "\tPossible choices:\n"
+msgstr ""
+
+#: src/setup/text/conf.c:123
+msgid "\tUse single space prefix to avoid conflicts with hotkeys!\n"
+msgstr ""
+
+#: src/setup/text/conf.c:125
+#, c-format
+msgid "\tEnter string (type '%s' for default value `%s'): "
+msgstr ""
+
+#: src/setup/text/conf.c:143
+#, c-format
+msgid "\t Enter choice (default is %c): "
+msgstr ""
+
+#: src/setup/text/conf.c:147
+#, c-format
+msgid "\tEnter floating point (type '%s' for default value %f): "
+msgstr ""
+
+#: src/setup/text/conf.c:153
+#, c-format
+msgid ""
+"\tEnter unsigned integer in interval [%llu,%llu] (type '%s' for default "
+"value %llu): "
+msgstr ""
+
+#: src/setup/text/conf.c:187
+#, fuzzy, c-format
+msgid "Yes\n"
+msgstr "Ja"
+
+#: src/setup/text/conf.c:192
+#, fuzzy, c-format
+msgid "No\n"
+msgstr "Nein"
+
+#: src/setup/text/conf.c:195 src/setup/text/conf.c:236
+#: src/setup/text/conf.c:266 src/setup/text/conf.c:329
+#: src/setup/text/conf.c:387
+#, fuzzy, c-format
+msgid "Help\n"
+msgstr "Hilfe"
+
+#: src/setup/text/conf.c:198 src/setup/text/conf.c:213
+#: src/setup/text/conf.c:276 src/setup/text/conf.c:307
+#: src/setup/text/conf.c:365
+#, fuzzy, c-format
+msgid "Abort\n"
+msgstr "_├╝ber"
+
+#: src/setup/text/conf.c:354 src/setup/text/conf.c:416
+#, c-format
+msgid ""
+"\n"
+"Invalid entry, try again (use '?' for help): "
+msgstr ""
+
+#: src/setup/text/conf.c:422
+#, c-format
+msgid "Unknown kind %x (internal error). Skipping option.\n"
+msgstr ""
+
+#: src/setup/text/conf.c:484
+msgid "\tDescend? (y/n/?) "
+msgstr ""
+
+#: src/setup/text/conf.c:493
+msgid "Aborted.\n"
+msgstr ""
+
+#: src/setup/text/conf.c:506
+#, fuzzy
+msgid "Invalid entry.\n"
+msgstr "Ung├╝ltiger Parameter: `%s'\n"
+
+#: src/setup/text/conf.c:524
+#, c-format
+msgid "Unknown kind %x (internal error). Aborting.\n"
+msgstr ""
+
+#: src/setup/text/conf.c:556
+#, c-format
+msgid "You can always press ENTER to keep the current value.\n"
+msgstr ""
+
+#: src/setup/text/conf.c:557
+#, c-format
+msgid "Use the '%s' key to abort.\n"
+msgstr ""
+
+#: src/setup/text/conf.c:575
+#, c-format
+msgid ""
+"Save configuration? Answer 'y' for yes, 'n' for no, 'r' to repeat "
+"configuration. "
+msgstr ""
+
+#: src/setup/text/conf.c:590
+#, fuzzy, c-format
+msgid "Configuration was unchanged, no need to save.\n"
+msgstr ""
+"Konfiguration oder die GNUnet Version hat sich ge├Ąndert. Sie m├╝ssen `%s' "
+"ausf├╝hren!\n"
+
+#: src/setup/text/conf.c:599
+#, fuzzy, c-format
+msgid "Configuration file `%s' written.\n"
+msgstr "Konfigurationsdatei `%s' wurde erzeugt.\n"
+
+#: src/setup/lib/tree.c:191
+#, c-format
+msgid ""
+"Internal error: entry `%s' in section `%s' not found for visibility change!\n"
+msgstr ""
+
+#: src/setup/lib/wizard_util.c:126
+msgid "Can't open Service Control Manager"
+msgstr "Der Dienstemanager konnte nicht ge├Âffnet werden"
+
+#: src/setup/lib/wizard_util.c:132
+msgid "Can't create service"
+msgstr "Der Dienst konnte nicht angelegt werden"
+
+#: src/setup/lib/wizard_util.c:136
+msgid "Error changing the permissions of the GNUnet directory"
+msgstr "Fehler beim Ändern der Berechtigungen des GNUnet Verzeichnisses"
+
+#: src/setup/lib/wizard_util.c:141
+#, fuzzy
+msgid "Cannot write to the registry"
+msgstr "Konnte nicht in die Registry schreiben"
+
+#: src/setup/lib/wizard_util.c:144
+msgid "Can't access the service"
+msgstr "Auf den Dienst konnte nicht zugegriffen werden"
+
+#: src/setup/lib/wizard_util.c:147
+msgid "Can't delete the service"
+msgstr "Dienst konnte nicht gel├Âscht werden"
+
+#: src/setup/lib/wizard_util.c:150
+msgid "Unknown error"
+msgstr "Unbekannter Fehler"
+
+#: src/setup/lib/wizard_util.c:186
+msgid "This version of Windows does not support multiple users."
+msgstr "Diese Version von Windows ist nicht Mehrbenutzerf├Ąhig."
+
+#: src/setup/lib/wizard_util.c:190
+msgid "Error creating user"
+msgstr "Fehler beim Anlegen des Benutzers"
+
+#: src/setup/lib/wizard_util.c:194
+msgid "Error accessing local security policy"
+msgstr "Fehler beim Zugriff auf die lokale Sicherheitsrichtlinie"
+
+#: src/setup/lib/wizard_util.c:199
+msgid "Error granting service right to user"
+msgstr "Fehler beim Zuweisen des Dienstrechtes dem Benutzer"
+
+#: src/setup/lib/wizard_util.c:204
+msgid "Unknown error while creating a new user"
+msgstr "Unbekannter Fehler beim Anlegen des neuen Benutzers"
+
+#: src/setup/lib/gns.c:297
+#, fuzzy, c-format
+msgid ""
+"Configuration does not satisfy constraints of configuration specification "
+"file `%s'!\n"
+msgstr ""
+"Die Konfigurationsdatei muss in der Sektion `%s' unter `%s' ein Verzeichnis "
+"f├╝r FS Daten angeben.\n"
+
+#: src/util/disk/storage.c:172
+#, fuzzy, c-format
+msgid "`%s' failed for drive `%s': %u\n"
+msgstr "`%s' fehlgeschlagen f├╝r Laufwerk %s: %u\n"
+
+#: src/util/disk/storage.c:524
+#, fuzzy, c-format
+msgid "Expected `%s' to be a directory!\n"
+msgstr "`%s' erwartet, dass `%s' ein Verzeichnis ist!\n"
+
+#: src/util/error/error.c:152
+#, c-format
+msgid "Message `%.*s' repeated %u times in the last %llus\n"
+msgstr ""
+
+#: src/util/error/error.c:254
+#, c-format
+msgid ""
+"\n"
+"Press any key to continue\n"
+msgstr ""
+
+#: src/util/error/error.c:336 src/util/error/error.c:371
+msgid "DEBUG"
+msgstr "DEBUG"
+
+#: src/util/error/error.c:338 src/util/error/error.c:373
+msgid "STATUS"
+msgstr ""
+
+#: src/util/error/error.c:340 src/util/error/error.c:377
+msgid "WARNING"
+msgstr "WARNUNG"
+
+#: src/util/error/error.c:342 src/util/error/error.c:379
+msgid "ERROR"
+msgstr "FEHLER"
+
+#: src/util/error/error.c:344 src/util/error/error.c:381
+msgid "FATAL"
+msgstr "SCHWERWIEGEND"
+
+#: src/util/error/error.c:346 src/util/error/error.c:383
+msgid "USER"
+msgstr ""
+
+#: src/util/error/error.c:348 src/util/error/error.c:385
+msgid "ADMIN"
+msgstr ""
+
+#: src/util/error/error.c:350 src/util/error/error.c:387
+msgid "DEVELOPER"
+msgstr ""
+
+#: src/util/error/error.c:352 src/util/error/error.c:389
+msgid "REQUEST"
+msgstr ""
+
+#: src/util/error/error.c:354 src/util/error/error.c:391
+msgid "BULK"
+msgstr ""
+
+#: src/util/error/error.c:356 src/util/error/error.c:393
+msgid "IMMEDIATE"
+msgstr ""
+
+#: src/util/error/error.c:358
+msgid "ALL"
+msgstr ""
+
+#: src/util/error/error.c:375
+msgid "INFO"
+msgstr "INFO"
+
+#: src/util/error/error.c:394
+msgid "NOTHING"
+msgstr "NICHTS"
+
+#: src/util/network_client/tcpio.c:98 src/util/network_client/tcpio.c:154
+msgid "Could not find valid value for HOST in section NETWORK.\n"
+msgstr ""
+
+#: src/util/network_client/tcpio.c:123
+#, fuzzy, c-format
+msgid "Syntax error in configuration entry HOST in section NETWORK: `%s'\n"
+msgstr "Syntaxfehler in Konfigurationsdatei `%s' in Zeile %d.\n"
+
+#: src/util/network_client/tcpio.c:335
+#, fuzzy, c-format
+msgid "Error connecting to %s:%u. Is the daemon running?\n"
+msgstr "Verbindung zu %u.%u.%u.%u:%u fehlgeschlagen: %s\n"
+
+#: src/util/network_client/tcpio.c:398
+#, fuzzy, c-format
+msgid "Cannot connect to %s:%u: %s\n"
+msgstr "Verbindung zu %u.%u.%u.%u:%u fehlgeschlagen: %s\n"
+
+#: src/util/network_client/tcpio.c:636
+#, fuzzy
+msgid "Reading result from gnunetd failed, reply invalid!\n"
+msgstr "`%s' fehlgeschlagen, Antwort ist ung├╝ltig!\n"
+
+#: src/util/getopt/setoption.c:59
+#, c-format
+msgid ""
+"Setting option `%s' in section `%s' to `%s' when processing command line "
+"option `%s' was denied.\n"
+msgstr ""
+
+#: src/util/getopt/setoption.c:138 src/util/getopt/setoption.c:155
+#, c-format
+msgid "You must pass a number to the `%s' option.\n"
+msgstr "Sie m├╝ssen f├╝r die Option `%s' zus├Ątzlich eine Zahl angeben.\n"
+
+#: src/util/getopt/printhelp.c:49
+#, c-format
+msgid ""
+"Arguments mandatory for long options are also mandatory for short options.\n"
+msgstr ""
+"Parameter, die f├╝r lange Optionen zwingend sind, sind auch f├╝r kurze "
+"Optionen zwingend.\n"
+
+#: src/util/getopt/getopt.c:684
+#, c-format
+msgid "%s: option `%s' is ambiguous\n"
+msgstr "%s: Option `%s' ist mehrdeutig\n"
+
+#: src/util/getopt/getopt.c:710
+#, c-format
+msgid "%s: option `--%s' does not allow an argument\n"
+msgstr "%s: Option '--%s' erlaubt keinen Parameter\n"
+
+#: src/util/getopt/getopt.c:716
+#, c-format
+msgid "%s: option `%c%s' does not allow an argument\n"
+msgstr "%s: Option '%c%s' erlaubt keinen Parameter\n"
+
+#: src/util/getopt/getopt.c:737 src/util/getopt/getopt.c:909
+#, c-format
+msgid "%s: option `%s' requires an argument\n"
+msgstr "%s: Option `%s' ben├Âtigt einen Parameter\n"
+
+#: src/util/getopt/getopt.c:767
+#, c-format
+msgid "%s: unrecognized option `--%s'\n"
+msgstr "%s: unbekannte Option '--%s'\n"
+
+#: src/util/getopt/getopt.c:771
+#, c-format
+msgid "%s: unrecognized option `%c%s'\n"
+msgstr "%s: unbekannte Option '%c%s'\n"
+
+#: src/util/getopt/getopt.c:797
+#, c-format
+msgid "%s: illegal option -- %c\n"
+msgstr "%s: unerlaubte Option -- %c\n"
+
+#: src/util/getopt/getopt.c:799
+#, c-format
+msgid "%s: invalid option -- %c\n"
+msgstr "%s: ung├╝ltige Option -- %c\n"
+
+#: src/util/getopt/getopt.c:828 src/util/getopt/getopt.c:958
+#, c-format
+msgid "%s: option requires an argument -- %c\n"
+msgstr "%s: Option ben├Âtigt einen Parameter -- %c\n"
+
+#: src/util/getopt/getopt.c:876
+#, c-format
+msgid "%s: option `-W %s' is ambiguous\n"
+msgstr "%s: Option '-W %s' ist mehrdeutig\n"
+
+#: src/util/getopt/getopt.c:894
+#, c-format
+msgid "%s: option `-W %s' does not allow an argument\n"
+msgstr "%s: Option '-W %s' erlaubt keinen Parameter\n"
+
+#: src/util/network/ip.c:96 src/util/network/ip.c:160 src/transports/ip.c:260
+#, fuzzy, c-format
+msgid "No interface specified in section `%s' under `%s'!\n"
+msgstr ""
+"Es sind keine Netzwerkger├Ąte in der Konfigurationsdatei in der Sektion `%s' "
+"unter `%s' definiert!\n"
+
+#: src/util/network/ip.c:127 src/util/network/ip.c:246 src/transports/ip.c:291
+#, c-format
+msgid "Could not obtain IP for interface `%s' using `%s'.\n"
+msgstr ""
+"Es konnte keine IP f├╝r das Ger├Ąt `%s' unter Verwendung von `%s' ermittelt "
+"werden.\n"
+
+#: src/util/network/ip.c:216
+#, fuzzy, c-format
+msgid ""
+"Could not find interface `%s' using `%s', trying to find another interface.\n"
+msgstr ""
+"Ger├Ąt `%s' konnte in `%s' nicht gefunden werden, es wird versucht, ein "
+"anderes Ger├Ąt zu finden.\n"
+
+#: src/util/network/ip.c:295
+#, c-format
+msgid "Could not find an IP address for interface `%s'.\n"
+msgstr "Es konnte keine IP-Adresse f├╝r das Ger├Ąt `%s' ermittelt werden.\n"
+
+#: src/util/network/ip.c:306
+#, fuzzy, c-format
+msgid ""
+"There is more than one IP address specified for interface `%s'.\n"
+"GNUnet will use %s.\n"
+msgstr ""
+"Es ist mehr als eine IP-Adresse f├╝r das Ger├Ąt `%s' angegeben.\n"
+"GNUnet wird %u.%u.%u.%u. verwenden.\n"
+
+#: src/util/network/ip.c:330
+#, c-format
+msgid "Could not resolve `%s' to determine our IP address: %s\n"
+msgstr ""
+"`%s' konnte nicht aufgel├Âst werden, um unsere IP-Adresse zu ermitteln: %s\n"
+
+#: src/util/network/ip.c:363
+#, fuzzy, c-format
+msgid "GNUnet now uses the IP address %s.\n"
+msgstr "GNUnet verwendet nun die IP-Adresse %u.%u.%u.%u.\n"
+
+#: src/util/network/ipcheck.c:106 src/util/network/ipcheck.c:136
+#: src/util/network/ipcheck.c:186 src/util/network/ipcheck.c:211
+#: src/util/network/ipcheck.c:219
+#, c-format
+msgid "Invalid format for IP: `%s'\n"
+msgstr "Ung├╝ltiges Format f├╝r IP: `%s'\n"
+
+#: src/util/network/ipcheck.c:167
+#, c-format
+msgid "Invalid network notation ('/%d' is not legal in IPv4 CIDR)."
+msgstr "Ung├╝ltige Netzwerk Notation ('/%d ist nicht g├╝ltig in IPv4 CIDR)."
+
+#: src/util/network/ipcheck.c:269
+#, c-format
+msgid "Invalid network notation (does not end with ';': `%s')\n"
+msgstr "Ung├╝ltige Netzwerk Notation (endet nicht mit ';': `%s')\n"
+
+#: src/util/network/ipcheck.c:306
+#, fuzzy, c-format
+msgid "Wrong format `%s' for netmask\n"
+msgstr "Falsches Format `%s' f├╝r Netzmaske: %s\n"
+
+#: src/util/network/ipcheck.c:338
+#, fuzzy, c-format
+msgid "Wrong format `%s' for network\n"
+msgstr "Falsches Format `%s' f├╝r Netzwerk: %s\n"
+
+#: src/util/network/dns.c:472
+#, fuzzy, c-format
+msgid "Could not resolve `%s' (%s): %s\n"
+msgstr "`%s' konnte nicht aufgel├Âst werden: %s\n"
+
+#: src/util/network/dns.c:523 src/util/network/dns.c:591
+#, c-format
+msgid "Could not find IP of host `%s': %s\n"
+msgstr "IP des Hosts `%s' konnte nicht ermittelt werden: %s\n"
+
+#: src/util/network/select.c:310
+#, fuzzy
+msgid "Received malformed message (too small) from connection. Closing.\n"
+msgstr ""
+"Es wurde per TCP von einem anderen Knoten eine ung├╝ltige Nachricht (Gr├Â├če %"
+"u) empfangen. Verbindung wird geschlossen.\n"
+
+#: src/util/network/select.c:495
+#, c-format
+msgid "select listen socket for `%s' not valid!\n"
+msgstr ""
+
+#: src/util/config/config.c:296
+#, c-format
+msgid "Syntax error in configuration file `%s' at line %d.\n"
+msgstr "Syntaxfehler in Konfigurationsdatei `%s' in Zeile %d.\n"
+
+#: src/util/config/config.c:592
+#, c-format
+msgid ""
+"Configuration value '%llu' for '%s' in section '%s' is out of legal bounds [%"
+"llu,%llu]\n"
+msgstr ""
+
+#: src/util/config/config.c:602
+#, c-format
+msgid "Configuration value '%s' for '%s' in section '%s' should be a number\n"
+msgstr ""
+
+#: src/util/config/config.c:688
+#, c-format
+msgid ""
+"Configuration value '%s' for '%s' in section '%s' is not in set of legal "
+"choices\n"
+msgstr ""
+
+#: src/util/crypto/locking_gcrypt.c:80
+#, c-format
+msgid "libgcrypt has not the expected version (version %s is required).\n"
+msgstr ""
+"libgcrypt hat nicht die erwartete Version (Version %s wird vorausgesetzt).\n"
+
+#: src/util/crypto/symcipher_gcrypt.c:46 src/util/crypto/symcipher_gcrypt.c:53
+#: src/util/crypto/hostkey_gcrypt.c:64 src/util/crypto/hostkey_gcrypt.c:71
+#: src/util/loggers/file.c:271 src/util/loggers/file.c:289
+#: src/applications/sqstore_sqlite/sqlite.c:45
+#: src/applications/sqstore_sqlite/sqlite.c:52
+#: src/applications/kvstore_sqlite/kv_sqlite.c:44
+#: src/applications/kvstore_sqlite/kv_sqlite.c:51
+#: src/applications/kvstore_mysql/kv_mysql.c:44
+#: src/applications/kvstore_mysql/kv_mysql.c:51
+#: src/applications/dstore_sqlite/dstore.c:94
+#: src/applications/dstore_sqlite/dstore.c:101
+#: src/applications/dstore_sqlite/dstore.c:222
+#: src/applications/dstore_sqlite/dstore.c:259
+#: src/applications/dstore_sqlite/dstore.c:285
+#: src/applications/dstore_sqlite/dstore.c:345
+#: src/applications/dstore_sqlite/dstore.c:366
+#: src/applications/dstore_sqlite/dstore.c:378
+#: src/applications/dstore_sqlite/dstore.c:407
+#: src/applications/dstore_sqlite/dstore.c:511
+#: src/applications/dstore_sqlite/dstore.c:555
+#: src/include/gnunet_util_error.h:249 src/include/gnunet_util_error.h:256
+#: src/include/gnunet_util_error.h:263
+#, c-format
+msgid "`%s' failed at %s:%d with error: %s\n"
+msgstr "`%s' schlug bei %s:%d mit dem Fehler %s fehl\n"
+
+#: src/util/crypto/hostkey_gcrypt.c:907
+#, c-format
+msgid "RSA signature verification failed at %s:%d: %s\n"
+msgstr "RSA Signatur├╝berpr├╝fung fehlgeschlagen bei %s:%d: %s\n"
+
+#: src/util/os/user.c:108 src/util/os/user.c:125
+#, fuzzy, c-format
+msgid "`%s' returned with error code %u"
+msgstr "`%s' schlug bei %s:%d mit dem Fehler %s fehl\n"
+
+#: src/util/os/user.c:155 src/util/os/user.c:200
+#, fuzzy, c-format
+msgid "Cannot obtain information about user `%s': %s\n"
+msgstr "Fehler beim Speichern der Konfigurationsdatei: `%s': %s.\n"
+
+#: src/util/os/user.c:156
+msgid "No such user"
+msgstr ""
+
+#: src/util/os/user.c:171
+#, c-format
+msgid "Cannot change user/group to `%s': %s\n"
+msgstr "Benutzer/Gruppe kann nicht zu `%s' gewechselt werden: %s\n"
+
+#: src/util/os/semaphore.c:227
+#, c-format
+msgid "Can't create semaphore: %i"
+msgstr "Semaphore konnte nicht angelegt werden: %i"
+
+#: src/util/os/cpustatus.c:464
+msgid "Cannot query the CPU usage (Windows NT).\n"
+msgstr "CPU Nutzung kann nicht ermittelt werden (Windows NT).\n"
+
+#: src/util/os/cpustatus.c:487
+msgid "Cannot query the CPU usage (Win 9x)\n"
+msgstr "CPU Nutzung kann nicht ermittelt werden (Win 9x).\n"
+
+#: src/util/os/dso.c:59
+#, c-format
+msgid "Initialization of plugin mechanism failed: %s!\n"
+msgstr "Initialisierung des Plugin Mechanismuses fehlgeschlagen: %s!\n"
+
+#: src/util/os/dso.c:120
+#, fuzzy, c-format
+msgid "`%s' failed for library `%s' with error: %s\n"
+msgstr "`%s' fehlgeschlagen f├╝r die Bibliothek `%s'. Ort: %s:%d. Fehler: %s\n"
+
+#: src/util/os/dso.c:162
+#, fuzzy, c-format
+msgid "`%s' failed to resolve method '%s' with error: %s\n"
+msgstr ""
+"`%s' konnte die Methode '%s%s' nicht aufl├Âsen. Ort: %s:%d. Fehler: %s\n"
+
+#: src/util/os/statuscalls.c:197 src/util/os/statuscalls.c:342
+#, fuzzy, c-format
+msgid "Failed to parse interface data from `%s'.\n"
+msgstr "Fehler beim Parsen der Ger├Ątedaten von `%s' bei %s:%d.\n"
+
+#: src/util/os/statuscalls.c:390 src/util/os/statuscalls.c:400
+#, c-format
+msgid ""
+"No network interfaces defined in configuration section `%s' under `%s'!\n"
+msgstr ""
+"Es sind keine Netzwerkger├Ąte in der Konfigurationsdatei in der Sektion `%s' "
+"unter `%s' definiert!\n"
+
+#: src/util/os/osconfig.c:153
+msgid "Setting open descriptor limit not supported.\n"
+msgstr ""
+
+#: src/util/os/osconfig.c:463 src/util/os/osconfig.c:492
+#, fuzzy, c-format
+msgid "Command `%s' failed with error code %u\n"
+msgstr "`%s' schlug bei %s:%d mit dem Fehler %s fehl\n"
+
+#: src/util/os/priority.c:78
+#, fuzzy, c-format
+msgid "Invalid process priority `%s'\n"
+msgstr "Ung├╝ltige Antwort auf `%s'.\n"
+
+#: src/util/threads/semaphore.c:168 src/util/threads/pthread.c:157
+#: src/util/threads/mutex.c:146
+#, fuzzy, c-format
+msgid "Real-time delay violation (%llu ms) at %s:%u\n"
+msgstr "Unerwartete sehr gro├če Allokierung (%u Bytes) bei %s:%d!\n"
+
+#: src/util/threads/pthread.c:169 src/util/threads/pthread.c:176
+#: src/util/threads/pthread.c:182 src/util/threads/pthread.c:276
+#, fuzzy, c-format
+msgid "`%s' failed with error code %s: %s\n"
+msgstr "`%s' schlug bei %s:%d mit dem Fehler %s fehl\n"
+
+#: src/util/threads/pthread.c:188 src/util/threads/pthread.c:286
+#, fuzzy, c-format
+msgid "`%s' failed with error code %d: %s\n"
+msgstr "`%s' schlug bei %s:%d mit dem Fehler %s fehl\n"
+
+#: src/util/threads/mutex.c:155 src/util/threads/mutex.c:201
+#, fuzzy, c-format
+msgid "Invalid argument for `%s'.\n"
+msgstr "Ung├╝ltiger Parameter: `%s'\n"
+
+#: src/util/threads/mutex.c:160
+#, fuzzy, c-format
+msgid "Deadlock due to `%s'.\n"
+msgstr "Durch `%s' ist ein Deadlock bei %s:%d entstanden\n"
+
+#: src/util/threads/mutex.c:187
+#, fuzzy, c-format
+msgid "Lock acquired for too long (%llu ms) at %s:%u\n"
+msgstr "Unerwartete sehr gro├če Allokierung (%u Bytes) bei %s:%d!\n"
+
+#: src/util/threads/mutex.c:207
+#, fuzzy, c-format
+msgid "Permission denied for `%s'.\n"
+msgstr "Zugriff verweigert f├╝r `%s' bei %s:%d.\n"
+
+#: src/util/boot/startup.c:259
+#, fuzzy, c-format
+msgid "Failed to run %s: %s %d\n"
+msgstr "Es konnte keine Verbindung mit gnunetd hergestellt werden.\n"
+
+#: src/util/string/string.c:55
+msgid "ms"
+msgstr "ms"
+
+#: src/util/string/string.c:61
+msgid "s"
+msgstr "s"
+
+#: src/util/string/string.c:65
+msgid "m"
+msgstr "m"
+
+#: src/util/string/string.c:69
+msgid "h"
+msgstr "h"
+
+#: src/util/string/string.c:73
+msgid " days"
+msgstr " Tage"
+
+#: src/util/string/string.c:89
+msgid "b"
+msgstr "b"
+
+#: src/util/string/string.c:95
+msgid "KiB"
+msgstr ""
+
+#: src/util/string/string.c:99
+msgid "MiB"
+msgstr ""
+
+#: src/util/string/string.c:103
+msgid "GiB"
+msgstr ""
+
+#: src/util/string/string.c:107
+msgid "TiB"
+msgstr ""
+
+#: src/util/string/string.c:226
+msgid "Failed to expand `$HOME': environment variable `HOME' not set"
+msgstr ""
+
+#: src/util/loggers/file.c:229
+#, fuzzy, c-format
+msgid "Failed to open log-file `%s': %s\n"
+msgstr "Datei wurde als `%s' gespeichert.\n"
+
+#: src/util/loggers/file.c:250
+#, fuzzy
+msgid "GNUnet error log"
+msgstr "GNUnet Netzwerk Topologie tracen."
+
+#: src/util/loggers/memory.c:72
+msgid "Out of memory (for logging)\n"
+msgstr ""
+
+#: src/util/pseudonym/names.c:79
+#, fuzzy
+msgid "no-name"
+msgstr "Name anzeigen"
+
+#: src/applications/datastore/datastore.c:183
+#: src/applications/datastore/datastore.c:199
+#, c-format
+msgid "Availability test failed for `%s' at %s:%d.\n"
+msgstr "Verf├╝gbarkeitstest f├╝r `%s' fehlgeschlagen bei %s:%d.\n"
+
+#: src/applications/datastore/datastore.c:401
+msgid "# requests filtered by bloom filter"
+msgstr ""
+
+#: src/applications/datastore/datastore.c:403
+msgid "# bloom filter false positives"
+msgstr ""
+
+#: src/applications/datastore/datastore.c:406
+msgid "# bytes allowed in datastore"
+msgstr "# bytes erlaubt in der Datenbank"
+
+#: src/applications/datastore/datastore.c:423
+#, fuzzy
+msgid "Failed to load state service. Trying to do without.\n"
+msgstr "Der Transportdienst auf Port %d konnte nicht gestartet werden.\n"
+
+#: src/applications/datastore/datastore.c:529
+#, c-format
+msgid "Datastore conversion at approximately %u%%\n"
+msgstr ""
+
+#: src/applications/datastore/datastore.c:576
+#, fuzzy, c-format
+msgid "Starting datastore conversion (this may take a while).\n"
+msgstr "Ein neuer Hostkey wird erzeugt (dies kann eine Weile dauern).\n"
+
+#: src/applications/datastore/datastore.c:584
+#, c-format
+msgid "Completed datastore conversion.\n"
+msgstr ""
+
+#: src/applications/datastore/datastore.c:592
+#, fuzzy
+msgid "Failed to load sqstore service. Check your configuration!\n"
+msgstr "Der Transportdienst auf Port %d konnte nicht gestartet werden.\n"
+
+#: src/applications/rpc/rpc.c:339
+#, fuzzy, c-format
+msgid ""
+"%s:%d - RPC %s:%p could not be registered: another callback is already using "
+"this name (%p)\n"
+msgstr ""
+"%s::%s - RPC %s:%p konnte nicht registriert werden: ein anderer Callback "
+"verwendet bereits diesen Namen (%p)\n"
+
+#: src/applications/rpc/rpc.c:398
+#, fuzzy, c-format
+msgid "%s:%d - async RPC %s:%p could not be unregistered: not found\n"
+msgstr ""
+"%s::%s - async RPC %s:%p konnte nicht unregistriert werden: nicht gefunden\n"
+
+#: src/applications/rpc/rpc.c:951
+#, c-format
+msgid "`%s' registering handlers %d %d %d\n"
+msgstr "`%s' registriert Handler %d %d %d\n"
+
+#: src/applications/rpc/rpc.c:972
+#, c-format
+msgid "Failed to initialize `%s' service.\n"
+msgstr "`%s' Dienst konnte nicht initialisiert werden.\n"
+
+#: src/applications/tbench/tbenchtest.c:53
+#, c-format
+msgid "Using %u messages of size %u for %u times.\n"
+msgstr "Verwende %u Nachrichten der Gr├Â├če %u %umal.\n"
+
+#: src/applications/tbench/tbenchtest.c:85
+#, c-format
+msgid "Times: max %16llu min %16llu mean %12.3f variance %12.3f\n"
+msgstr "Zeiten: Max %16llu Min %16llu Mittel %12.3f Varianz %12.3f\n"
+
+#: src/applications/tbench/tbenchtest.c:89
+#, c-format
+msgid "Loss: max %16u min %16u mean %12.3f variance %12.3f\n"
+msgstr "Verloren: Max %16u Min %16u Mittel %12.3f Varianz %12.3f\n"
+
+#: src/applications/tbench/tbenchtest.c:95
+#, c-format
+msgid ""
+"\n"
+"Failed to receive reply from gnunetd.\n"
+msgstr ""
+"\n"
+"Fehler beim Empfangen der Antwort von gnunetd.\n"
+
+#: src/applications/tbench/tbenchtest.c:149
+#, c-format
+msgid "Running benchmark...\n"
+msgstr "Benchmark l├Ąuft...\n"
+
+#: src/applications/tbench/tbench.c:422
+msgid "allows profiling of direct peer-to-peer connections"
+msgstr "Erm├Âglicht das Untersuchen direkter Peer-to-Peer Verbindungen"
+
+#: src/applications/tbench/gnunet-tbench.c:63
+#: src/applications/tracekit/gnunet-tracekit.c:302
+msgid "Start GNUnet transport benchmarking tool."
+msgstr "GNUnet Transport Benchmarking Werkzeug starten."
+
+#: src/applications/tbench/gnunet-tbench.c:65
+msgid "output in gnuplot format"
+msgstr "Ausgabe im gnuplot Format"
+
+#: src/applications/tbench/gnunet-tbench.c:69
+msgid "number of iterations"
+msgstr "Anzahl an Durchl├Ąufen"
+
+#: src/applications/tbench/gnunet-tbench.c:73
+msgid "number of messages to use per iteration"
+msgstr "Anzahl an Nachrichten, die pro Durchlauf verwendet wird"
+
+#: src/applications/tbench/gnunet-tbench.c:76
+msgid "receiver host identifier (ENC file name)"
+msgstr "Bezeichner des Empf├Ąngerhosts (ENC Dateiname)"
+
+#: src/applications/tbench/gnunet-tbench.c:79
+msgid "message size"
+msgstr "Nachrichtengr├Â├če"
+
+#: src/applications/tbench/gnunet-tbench.c:82
+msgid "sleep for SPACE ms after each a message block"
+msgstr "F├╝r SPACE ms nach jedem Nachrichtenblock pausieren"
+
+#: src/applications/tbench/gnunet-tbench.c:85
+msgid "time to wait for the completion of an iteration (in ms)"
+msgstr "Zeit, die gewartet wird, bis der Durchlauf fertiggestellt wird (in ms)"
+
+#: src/applications/tbench/gnunet-tbench.c:90
+msgid "number of messages in a message block"
+msgstr "Anzahl an Nachrichten in einem Nachrichtenblock"
+
+#: src/applications/tbench/gnunet-tbench.c:126
+#: src/applications/tracekit/gnunet-tracekit.c:352
+#: src/applications/tracekit/tracekittest.c:133
+#: src/applications/template/gnunet-template.c:95
+#: src/applications/stats/gnunet-stats.c:121
+#: src/applications/vpn/gnunet-vpn.c:154
+#, c-format
+msgid "Error establishing connection with gnunetd.\n"
+msgstr "Fehler beim Aufbauen einer Verbindung mit gnunetd.\n"
+
+#: src/applications/tbench/gnunet-tbench.c:142
+#, c-format
+msgid "You must specify a receiver!\n"
+msgstr "Sie m├╝ssen einen Empf├Ąnger angeben!\n"
+
+#: src/applications/tbench/gnunet-tbench.c:152
+#, c-format
+msgid "Invalid receiver peer ID specified (`%s' is not valid name).\n"
+msgstr ""
+"Ung├╝ltige Empf├Ąngerknoten ID angegeben (`%s' ist kein g├╝ltiger Name).\n"
+
+#: src/applications/tbench/gnunet-tbench.c:189
+#, c-format
+msgid "Time:\n"
+msgstr "Zeit:\n"
+
+#: src/applications/tbench/gnunet-tbench.c:190
+#, c-format
+msgid "\tmax %llums\n"
+msgstr "\tMax %llums\n"
+
+#: src/applications/tbench/gnunet-tbench.c:191
+#, c-format
+msgid "\tmin %llums\n"
+msgstr "\tMin %llums\n"
+
+#: src/applications/tbench/gnunet-tbench.c:192
+#, c-format
+msgid "\tmean %8.4fms\n"
+msgstr "\tMittel %8.4fms\n"
+
+#: src/applications/tbench/gnunet-tbench.c:193
+#, c-format
+msgid "\tvariance %8.4fms\n"
+msgstr "\tVarianz %8.4fms\n"
+
+#: src/applications/tbench/gnunet-tbench.c:195
+#, c-format
+msgid "Loss:\n"
+msgstr "Verlust:\n"
+
+#: src/applications/tbench/gnunet-tbench.c:196
+#, c-format
+msgid "\tmax %u\n"
+msgstr "\tMax %u\n"
+
+#: src/applications/tbench/gnunet-tbench.c:197
+#, c-format
+msgid "\tmin %u\n"
+msgstr "\tMin %u\n"
+
+#: src/applications/tbench/gnunet-tbench.c:198
+#, c-format
+msgid "\tmean %8.4f\n"
+msgstr "\tMittel %8.4fms\n"
+
+#: src/applications/tbench/gnunet-tbench.c:199
+#, c-format
+msgid "\tvariance %8.4f\n"
+msgstr "\tVarianz %8.4f\n"
+
+#: src/applications/tbench/gnunet-tbench.c:205
+#, c-format
+msgid "Output format not known, this should not happen.\n"
+msgstr "Ausgabeformat ist unbekannt, dies sollte nicht passieren.\n"
+
+#: src/applications/tbench/gnunet-tbench.c:211
+#, c-format
+msgid ""
+"\n"
+"Did not receive the message from gnunetd. Is gnunetd running?\n"
+msgstr ""
+"\n"
+"Es wurde keine Nachricht von gnunetd empfangen. L├Ąuft gnunetd?\n"
+
+#: src/applications/traffic/traffic.c:454
+#, c-format
+msgid "# bytes transmitted of type %d"
+msgstr "# Bytes des Typs %d ├╝bertragen"
+
+#: src/applications/traffic/traffic.c:470
+#, c-format
+msgid "# bytes received of type %d"
+msgstr "# Bytes des Typs %d empfangen"
+
+#: src/applications/traffic/traffic.c:489
+#, fuzzy, c-format
+msgid "# bytes received in plaintext of type %d"
+msgstr "# Bytes des Typs %d empfangen"
+
+#: src/applications/traffic/traffic.c:652
+msgid "tracks bandwidth utilization by gnunetd"
+msgstr "Verfolgt die Bandbreitennutzung von gnunetd"
+
+#: src/applications/sqstore_sqlite/sqlite.c:218
+#, c-format
+msgid "Unable to initialize SQLite: %s.\n"
+msgstr "SQLite Datenbank konnte nicht initialisiert werden: %s.\n"
+
+#: src/applications/sqstore_sqlite/sqlite.c:434
+#: src/applications/sqstore_sqlite/sqlite.c:469
+#, c-format
+msgid "Invalid data in %s. Trying to fix (by deletion).\n"
+msgstr "Ung├╝ltige Daten in %s. Korrektur wird versucht (durch L├Âschung).\n"
+
+#: src/applications/sqstore_sqlite/sqlite.c:435
+#: src/applications/sqstore_sqlite/sqlite.c:470
+msgid "sqlite datastore"
+msgstr "sqlite Datenspeicher"
+
+#: src/applications/sqstore_sqlite/sqlite.c:1474
+#: src/applications/sqstore_mysql/mysql.c:1078
+msgid "# bytes in datastore"
+msgstr "# bytes in der Datenbank"
+
+#: src/applications/sqstore_sqlite/sqlite.c:1476
+#, fuzzy
+msgid "# bytes allocated by SQLite"
+msgstr "# bytes erlaubt in der Datenbank"
+
+#: src/applications/sqstore_mysql/mysql.c:1085
+#: src/applications/sqstore_mysql/mysql.c:1160
+msgid ""
+"Failed to load MySQL database module. Check that MySQL is running and "
+"configured properly!\n"
+msgstr ""
+"Fehler beim Laden des MySQL Datenbankmoduls. Pr├╝fen Sie, ob MySQL l├Ąuft und "
+"richtig eingerichtet ist!\n"
+
+#: src/applications/tracekit/gnunet-tracekit.c:104
+#, c-format
+msgid "`%s' connected to `%s'.\n"
+msgstr "`%s' hat sich mit `%s' verbunden.\n"
+
+#: src/applications/tracekit/gnunet-tracekit.c:110
+#: src/applications/tracekit/tracekittest.c:67
+#, c-format
+msgid "`%s' is not connected to any peer.\n"
+msgstr "`%s' ist zu keinem Knoten verbunden.\n"
+
+#: src/applications/tracekit/gnunet-tracekit.c:295
+msgid "probe network to the given DEPTH"
+msgstr "Netzwerk bis zur angegebenen Tiefe DEPTH sondieren"
+
+#: src/applications/tracekit/gnunet-tracekit.c:299
+msgid ""
+"specify output format; 0 for human readable output, 1 for dot, 2 for vcg"
+msgstr "Gibt das Ausgabeformat an: 0 f├╝r menschen-lesbar, 1 f├╝r dot, 2 f├╝r vcg"
+
+#: src/applications/tracekit/gnunet-tracekit.c:306
+#, fuzzy
+msgid "use PRIORITY for the priority of the trace request"
+msgstr "PRIO als Priorit├Ąt f├╝r die Trace Anfragen verwenden"
+
+#: src/applications/tracekit/gnunet-tracekit.c:310
+msgid "wait DELAY seconds for replies"
+msgstr "DELAY Sekunden auf Antworten warten"
+
+#: src/applications/tracekit/gnunet-tracekit.c:344
+#, c-format
+msgid ""
+"Format specification invalid. Use 0 for user-readable, 1 for dot, 2 for "
+"vcg.\n"
+msgstr ""
+"Formatangabe ung├╝ltig. Verwenden Sie 0 f├╝r menschen-lesbar, 1 f├╝r dot und 2 "
+"f├╝r vcg.\n"
+
+#: src/applications/tracekit/tracekittest.c:60
+#, fuzzy, c-format
+msgid "`%.*s' connected to `%.*s'.\n"
+msgstr "`%s' hat sich mit `%s' verbunden.\n"
+
+#: src/applications/tracekit/tracekit.c:440
+msgid "allows mapping of the network topology"
+msgstr "Erlaubt die Kartographierung der Netzwerktopologie"
+
+#: src/applications/advertising/advertising_test.c:47
+#: src/applications/hostlist/hostlisttest.c:40
+#: src/applications/session/sessiontest.c:40
+#: src/applications/session/sessiontest_nat_http.c:40
+#: src/applications/session/sessiontest_nat.c:40
+#: src/applications/stats/statistics.c:247
+msgid "# of connected peers"
+msgstr "# verbundener Knoten"
+
+#: src/applications/advertising/advertising.c:194
+#, fuzzy, c-format
+msgid "HELLO message from `%s' has an invalid signature. Dropping.\n"
+msgstr ""
+"Hello Nachricht von `%s' ist ung├╝ltig (Signatur ist ung├╝ltig). Nachricht "
+"wurde verworfen.\n"
+
+#: src/applications/advertising/advertising.c:205
+#, fuzzy
+msgid "HELLO message has expiration too far in the future. Dropping.\n"
+msgstr ""
+"Empfangene Hello Nachricht ist ung├╝ltig (Ablaufzeit ├╝ber Limit). Nachricht "
+"wurde verworfen.\n"
+
+#: src/applications/advertising/advertising.c:406
+#, fuzzy
+msgid "Could not send HELLO+PING, ping buffer full.\n"
+msgstr "Hellos+PING konnten nicht gesendet werden, Ping Puffer ist voll.\n"
+
+#: src/applications/advertising/advertising.c:429
+msgid "Failed to create an advertisement for this peer. Will not send PING.\n"
+msgstr ""
+
+#: src/applications/advertising/advertising.c:581
+#, c-format
+msgid "Advertising my transport %d to selected peers.\n"
+msgstr "Transport %d wird ausgew├Ąhlten anderen Knoten bekannt gegeben.\n"
+
+#: src/applications/advertising/advertising.c:590
+msgid ""
+"Announcing ourselves pointless: no other peers are known to us so far.\n"
+msgstr ""
+"Bekanntmachung von uns zwecklos: bis jetzt sind uns keine anderen Knoten "
+"bekannt.\n"
+
+#: src/applications/advertising/advertising.c:868
+msgid "# Peer advertisements received"
+msgstr "# Knotenank├╝ndigungen empfangen"
+
+#: src/applications/advertising/advertising.c:871
+#, fuzzy
+msgid "# Peer advertisements of type NAT received"
+msgstr "# Knotenank├╝ndigungen empfangen"
+
+#: src/applications/advertising/advertising.c:874
+#, fuzzy
+msgid "# Peer advertisements confirmed via PONG"
+msgstr "# Knotenank├╝ndigungen empfangen"
+
+#: src/applications/advertising/advertising.c:877
+#, fuzzy
+msgid "# Peer advertisements updating earlier HELLOs"
+msgstr "# Knotenank├╝ndigungen empfangen"
+
+#: src/applications/advertising/advertising.c:880
+#, fuzzy
+msgid "# Peer advertisements discarded due to load"
+msgstr "# Knotenank├╝ndigungen empfangen"
+
+#: src/applications/advertising/advertising.c:883
+#, fuzzy
+msgid "# Peer advertisements for unsupported transport"
+msgstr "# Knotenank├╝ndigungen empfangen"
+
+#: src/applications/advertising/advertising.c:886
+#, fuzzy
+msgid "# Peer advertisements not confirmed due to ping busy"
+msgstr "# Knotenank├╝ndigungen empfangen"
+
+#: src/applications/advertising/advertising.c:889
+#, fuzzy
+msgid "# Peer advertisements not confirmed due to lack of self ad"
+msgstr "# Knotenank├╝ndigungen empfangen"
+
+#: src/applications/advertising/advertising.c:892
+#, fuzzy
+msgid "# Peer advertisements not confirmed due to send error"
+msgstr "# Knotenank├╝ndigungen empfangen"
+
+#: src/applications/advertising/advertising.c:894
+msgid "# Self advertisments transmitted"
+msgstr "# Selbstbekanntmachungen ├╝bertragen"
+
+#: src/applications/advertising/advertising.c:896
+msgid "# Foreign advertisements forwarded"
+msgstr "# Bekanntmachungen von anderen ├╝bertragen"
+
+#: src/applications/advertising/advertising.c:898
+#: src/applications/pingpong/pingpong.c:528
+msgid "# plaintext PING messages sent"
+msgstr "# Klartext PING Nachrichten gesendet"
+
+#: src/applications/advertising/advertising.c:904
+#: src/applications/session/connect.c:932
+#, c-format
+msgid "`%s' registering handler %d (plaintext and ciphertext)\n"
+msgstr "`%s' registriert Handler %d (Plaintext und Ciphertext)\n"
+
+#: src/applications/advertising/advertising.c:922
+msgid ""
+"ensures that this peer is known by other peers and discovers other peers"
+msgstr ""
+"Stellt sicher, dass dieser Knoten anderen Knoten bekannt ist und entdeckt "
+"andere Knoten"
+
+#: src/applications/fragmentation/fragmentation.c:578
+msgid "# messages defragmented"
+msgstr "# defragmentierter Nachrichten"
+
+#: src/applications/fragmentation/fragmentation.c:580
+msgid "# messages fragmented"
+msgstr "# fragmentierter Nachrichten"
+
+#: src/applications/fragmentation/fragmentation.c:581
+msgid "# fragments discarded"
+msgstr "# verworfener Nachrichten"
+
+#: src/applications/fragmentation/fragmentation.c:592
+#, c-format
+msgid "`%s' registering handler %d\n"
+msgstr "`%s' registriert Handler %d\n"
+
+#: src/applications/topology_default/topology.c:466
+#, fuzzy, c-format
+msgid "Could not read friends list `%s'\n"
+msgstr "Fehler beim Lesen der Freunde-Liste von `%s'\n"
+
+#: src/applications/topology_default/topology.c:485
+#, c-format
+msgid "Failed to read friends list from `%s'\n"
+msgstr "Fehler beim Lesen der Freunde-Liste von `%s'\n"
+
+#: src/applications/topology_default/topology.c:505
+msgid "Syntax error in topology specification, skipping bytes.\n"
+msgstr "Syntaxfehler in Topolgieangabe, Bytes werden ├╝bersprungen.\n"
+
+#: src/applications/topology_default/topology.c:523
+#, c-format
+msgid "Syntax error in topology specification, skipping bytes `%s'.\n"
+msgstr "Syntaxfehler in Topologieangabe, ├╝berspringe Bytes `%s'.\n"
+
+#: src/applications/topology_default/topology.c:535
+msgid ""
+"Fewer friends specified than required by minimum friend count. Will only "
+"connect to friends.\n"
+msgstr ""
+
+#: src/applications/topology_default/topology.c:543
+msgid ""
+"More friendly connections required than target total number of connections.\n"
+msgstr ""
+
+#: src/applications/topology_default/topology.c:726
+msgid "maintains GNUnet default mesh topology"
+msgstr ""
+
+#: src/applications/chat/tools/gnunet-chat.c:107
+msgid "anonymous"
+msgstr ""
+
+#: src/applications/chat/tools/gnunet-chat.c:113
+#, fuzzy, c-format
+msgid "`%s' said: %s\n"
+msgstr "`%s' %s schlug fehl: %s\n"
+
+#: src/applications/chat/tools/gnunet-chat.c:116
+#: src/applications/chat/tools/gnunet-chat.c:119
+#, fuzzy, c-format
+msgid "`%s' said to you: %s\n"
+msgstr "`%s' %s schlug fehl: %s\n"
+
+#: src/applications/chat/tools/gnunet-chat.c:122
+#, fuzzy, c-format
+msgid "`%s' said for sure: %s\n"
+msgstr "`%s' fehlgeschlagen f├╝r Laufwerk %s: %u\n"
+
+#: src/applications/chat/tools/gnunet-chat.c:125
+#, fuzzy, c-format
+msgid "`%s' said to you for sure: %s\n"
+msgstr "`%s' schlug bei %s:%d mit dem Fehler %s fehl\n"
+
+#: src/applications/chat/tools/gnunet-chat.c:128
+#, fuzzy, c-format
+msgid "`%s' was confirmed that you received: %s\n"
+msgstr "`%s' schlug bei %s:%d mit dem Fehler %s fehl\n"
+
+#: src/applications/chat/tools/gnunet-chat.c:131
+#, c-format
+msgid "`%s' was confirmed that you and only you received: %s\n"
+msgstr ""
+
+#: src/applications/chat/tools/gnunet-chat.c:134
+#, c-format
+msgid "`%s' was confirmed that you received from him or her: %s\n"
+msgstr ""
+
+#: src/applications/chat/tools/gnunet-chat.c:139
+#, c-format
+msgid "`%s' was confirmed that you and only you received from him or her: %s\n"
+msgstr ""
+
+#: src/applications/chat/tools/gnunet-chat.c:142
+#, fuzzy, c-format
+msgid "`%s' said off the record: %s\n"
+msgstr "`%s' schlug bei %s:%d mit dem Fehler %s fehl\n"
+
+#: src/applications/chat/tools/gnunet-chat.c:145
+#, c-format
+msgid "<%s> said using an unknown message type: %s\n"
+msgstr ""
+
+#: src/applications/chat/tools/gnunet-chat.c:167
+#, c-format
+msgid "`%s' entered the room\n"
+msgstr ""
+
+#: src/applications/chat/tools/gnunet-chat.c:167
+#, fuzzy, c-format
+msgid "`%s' left the room\n"
+msgstr "Fehler beim Binden an UDP Port %d.\n"
+
+#: src/applications/chat/tools/gnunet-chat.c:239
+#: src/applications/chat/tools/gnunet-chat.c:348
+#, fuzzy, c-format
+msgid "Failed to send message.\n"
+msgstr "Zustellung der Nachricht `%s' fehlgeschlagen.\n"
+
+#: src/applications/chat/tools/gnunet-chat.c:265
+#: src/applications/chat/tools/gnunet-chat.c:524
+#, fuzzy, c-format
+msgid "Joined room `%s' as user `%s'.\n"
+msgstr "Ung├╝ltige Antwort auf `%s' von Knoten `%s' empfangen.\n"
+
+#: src/applications/chat/tools/gnunet-chat.c:293
+#, fuzzy, c-format
+msgid "Changed username to `%s'.\n"
+msgstr "Benutzer/Gruppe kann nicht zu `%s' gewechselt werden: %s\n"
+
+#: src/applications/chat/tools/gnunet-chat.c:301
+#, fuzzy, c-format
+msgid "Unknown command `%s'.\n"
+msgstr "Unbekannte Operation `%s'\n"
+
+#: src/applications/chat/tools/gnunet-chat.c:316
+#, c-format
+msgid "Syntax: /msg USERNAME MESSAGE"
+msgstr ""
+
+#: src/applications/chat/tools/gnunet-chat.c:324
+#, fuzzy, c-format
+msgid "Unknown user `%s'\n"
+msgstr "Unbekannte Operation `%s'\n"
+
+#: src/applications/chat/tools/gnunet-chat.c:339
+#, c-format
+msgid "User `%s' is currently not in the room!\n"
+msgstr ""
+
+#: src/applications/chat/tools/gnunet-chat.c:361
+#, c-format
+msgid "Users in room `%s': "
+msgstr ""
+
+#: src/applications/chat/tools/gnunet-chat.c:390
+msgid ""
+"Use `/join #roomname' to join a chat room. Joining a room will cause you to "
+"leave the current room"
+msgstr ""
+
+#: src/applications/chat/tools/gnunet-chat.c:393
+msgid ""
+"Use `/nick nickname' to change your nickname. This will cause you to leave "
+"the current room and immediately rejoin it with the new name."
+msgstr ""
+
+#: src/applications/chat/tools/gnunet-chat.c:396
+msgid ""
+"Use `/msg nickname message' to send a private message to the specified user"
+msgstr ""
+
+#: src/applications/chat/tools/gnunet-chat.c:398
+msgid "The `/notice' command is an alias for `/msg'"
+msgstr ""
+
+#: src/applications/chat/tools/gnunet-chat.c:400
+msgid "The `/query' command is an alias for `/msg'"
+msgstr ""
+
+#: src/applications/chat/tools/gnunet-chat.c:402
+msgid "Use `/quit' to terminate gnunet-chat"
+msgstr ""
+
+#: src/applications/chat/tools/gnunet-chat.c:404
+msgid "The `/leave' command is an alias for `/quit'"
+msgstr ""
+
+#: src/applications/chat/tools/gnunet-chat.c:407
+msgid "Use `/names' to list all of the current members in the chat room"
+msgstr ""
+
+#: src/applications/chat/tools/gnunet-chat.c:409
+msgid "Use `/help command' to get help for a specific command"
+msgstr ""
+
+#: src/applications/chat/tools/gnunet-chat.c:457
+msgid "Join a chat on GNUnet."
+msgstr ""
+
+#: src/applications/chat/tools/gnunet-chat.c:461
+msgid "set the nickname to use (required)"
+msgstr ""
+
+#: src/applications/chat/tools/gnunet-chat.c:464
+msgid "set the chat room to join"
+msgstr ""
+
+#: src/applications/chat/tools/gnunet-chat.c:495
+#, fuzzy, c-format
+msgid "You must specify a nickname\n"
+msgstr "Sie m├╝ssen einen Empf├Ąnger angeben!\n"
+
+#: src/applications/chat/tools/gnunet-chat.c:515
+#, fuzzy, c-format
+msgid "Failed to join room `%s'\n"
+msgstr "Fehler beim Binden an UDP Port %d.\n"
+
+#: src/applications/chat/module/chat.c:325
+#, fuzzy, c-format
+msgid "`%s' registering CS handlers %d and %d\n"
+msgstr "`%s' registriert Handler %d und %d\n"
+
+#: src/applications/chat/module/chat.c:347
+msgid "enables P2P-chat (incomplete)"
+msgstr "Erm├Âglicht P2P-Chat"
+
+#: src/applications/chat/lib/messaging.c:353
+#: src/applications/identity/hostkey.c:122
+#, fuzzy, c-format
+msgid "Failed to access GNUnet home directory `%s'\n"
+msgstr "Dateiformat fehlerhaft (kein GNUnet Verzeichnis?)\n"
+
+#: src/applications/chat/lib/messaging.c:389
+#, fuzzy, c-format
+msgid "Existing key in file `%s' failed format check, creating new key.\n"
+msgstr ""
+"Format├╝berpr├╝fung schlug f├╝r die existierende Hostkeydatei `%s' fehl, es "
+"wird ein neuer Hostkey erzeugt.\n"
+
+#: src/applications/chat/lib/messaging.c:399
+#, fuzzy
+msgid "Creating new key for this nickname (this may take a while).\n"
+msgstr "Ein neuer Hostkey wird erzeugt (dies kann eine Weile dauern).\n"
+
+#: src/applications/chat/lib/messaging.c:411
+#, fuzzy
+msgid "Done creating key.\n"
+msgstr "Hostkey wurde erfolgreich erzeugt.\n"
+
+#: src/applications/dstore_mysql/dstore_mysql.c:471
+#, fuzzy
+msgid "Failed to initialize MySQL database connection for dstore.\n"
+msgstr "SQLite Datenbank konnte nicht initialisiert werden.\n"
+
+#: src/applications/dstore_mysql/dstore_mysql.c:494
+#: src/applications/dstore_sqlite/dstore.c:636
+#, fuzzy
+msgid "# bytes in dstore"
+msgstr "# bytes in der Datenbank"
+
+#: src/applications/dstore_mysql/dstore_mysql.c:496
+#: src/applications/dstore_sqlite/dstore.c:638
+#, fuzzy
+msgid "# max bytes allowed in dstore"
+msgstr "# bytes erlaubt in der Datenbank"
+
+#: src/applications/transport/transport.c:191
+#, c-format
+msgid ""
+"Converting peer address to string failed, transport type %d not supported\n"
+msgstr ""
+
+#: src/applications/transport/transport.c:246
+#, c-format
+msgid "Transport connection attempt failed, transport type %d not supported\n"
+msgstr ""
+
+#: src/applications/transport/transport.c:299
+#, c-format
+msgid ""
+"Transport failed to connect to peer `%s' (%u HELLOs known, none worked)\n"
+msgstr ""
+
+#: src/applications/transport/transport.c:376
+#, fuzzy, c-format
+msgid "Transmission attempt failed, transport type %d unknown.\n"
+msgstr "Kein Transport des Typs %d bekannt.\n"
+
+#: src/applications/transport/transport.c:500
+#, c-format
+msgid "No transport of type %d known.\n"
+msgstr "Kein Transport des Typs %d bekannt.\n"
+
+#: src/applications/transport/transport.c:560
+msgid "No transport succeeded in creating a hello!\n"
+msgstr ""
+
+#: src/applications/transport/transport.c:761
+#, fuzzy, c-format
+msgid "Loading transports `%s'\n"
+msgstr "Teste Transport(e) %s\n"
+
+#: src/applications/transport/transport.c:781
+#, fuzzy, c-format
+msgid "Could not load transport plugin `%s'\n"
+msgstr "Anwendung `%s' konnte nicht initialisiert werden.\n"
+
+#: src/applications/transport/transport.c:795
+#, c-format
+msgid "Transport library `%s' did not provide required function '%s%s'.\n"
+msgstr ""
+"Transport Bibliothek `%s' stellt nicht die ben├Âtigte Funktion '%s%s' zur "
+"Verf├╝gung.\n"
+
+#: src/applications/transport/transport.c:824
+#, fuzzy, c-format
+msgid "Loaded transport `%s'\n"
+msgstr "Verf├╝gbare(r) Transport(e): %s\n"
+
+#: src/applications/transport/transport.c:836
+#: src/server/gnunet-peer-info.c:252
+#, c-format
+msgid "I am peer `%s'.\n"
+msgstr "Ich bin Peer `%s'.\n"
+
+#: src/applications/dht/tools/dht_multipeer_test.c:80
+#: src/applications/dht/tools/dht_twopeer_test.c:47
+#: src/applications/dht/module/table.c:783
+msgid "# dht connections"
+msgstr ""
+
+#: src/applications/dht/tools/dht-query.c:54
+#, fuzzy
+msgid "Query (get KEY, put KEY VALUE) DHT table."
+msgstr "Eine DHT Tabelle abfragen (get KEY, put KEY VALUE, remove KEY VALUE)."
+
+#: src/applications/dht/tools/dht-query.c:58
+#, fuzzy
+msgid "allow TIME ms to process a GET command"
+msgstr "TIME ms erlauben, um jedes Kommando zu bearbeiten"
+
+#: src/applications/dht/tools/dht-query.c:107
+#, fuzzy, c-format
+msgid "Issuing `%s(%s,%s)' command.\n"
+msgstr "'%s(%s,%s)' fehlgeschlagen.\n"
+
+#: src/applications/dht/tools/dht-query.c:142
+#: src/applications/fs/tools/gnunet-auto-share.c:669
+#, c-format
+msgid "Failed to connect to gnunetd.\n"
+msgstr "Es konnte keine Verbindung mit gnunetd hergestellt werden.\n"
+
+#: src/applications/dht/tools/dht-query.c:155
+#, c-format
+msgid "Command `%s' requires an argument (`%s').\n"
+msgstr "Kommando `%s' ben├Âtigt eine zus├Ątzliche Angabe (`%s').\n"
+
+#: src/applications/dht/tools/dht-query.c:172
+#, c-format
+msgid "Command `%s' requires two arguments (`%s' and `%s').\n"
+msgstr "Kommando `%s' ben├Âtigt zwei zus├Ątzliche Angaben (`%s' und `%s').\n"
+
+#: src/applications/dht/tools/dht-query.c:183
+#, c-format
+msgid "Unsupported command `%s'. Aborting.\n"
+msgstr "Kommando `%s' wird nicht unterst├╝tzt. Vorgang wird abgebrochen.\n"
+
+#: src/applications/dht/module/table.c:785
+#, fuzzy
+msgid "# dht discovery messages received"
+msgstr "# verschl├╝sselter PING Nachrichten empfangen"
+
+#: src/applications/dht/module/table.c:787
+msgid "# dht route host lookups performed"
+msgstr ""
+
+#: src/applications/dht/module/table.c:789
+#, fuzzy
+msgid "# dht discovery messages sent"
+msgstr "# verschl├╝sselter PING Nachrichten empfangen"
+
+#: src/applications/dht/module/routing.c:879
+msgid "# dht replies routed"
+msgstr ""
+
+#: src/applications/dht/module/routing.c:881
+msgid "# dht requests routed"
+msgstr "# dht Anfragen weitergeleitet"
+
+#: src/applications/dht/module/routing.c:883
+#, fuzzy
+msgid "# dht get requests received"
+msgstr "# Client Trace-Anfragen empfangen"
+
+#: src/applications/dht/module/routing.c:885
+#, fuzzy
+msgid "# dht put requests received"
+msgstr "# Client Trace-Anfragen empfangen"
+
+#: src/applications/dht/module/routing.c:887
+#, fuzzy
+msgid "# dht results received"
+msgstr "# Bytes empfangen ├╝ber TCP"
+
+#: src/applications/dht/module/routing.c:892
+#, fuzzy, c-format
+msgid "`%s' registering p2p handlers: %d %d %d\n"
+msgstr "`%s' registriert Handler %d %d %d\n"
+
+#: src/applications/dht/module/cs.c:122
+#, c-format
+msgid "`%s' failed. Terminating connection to client.\n"
+msgstr "`%s' fehlgeschlagen. Beende Verbindung zu Client.\n"
+
+#: src/applications/dht/module/cs.c:250
+#, fuzzy, c-format
+msgid "`%s' registering client handlers: %d %d\n"
+msgstr "`%s' registriert Client-Handler %d\n"
+
+#: src/applications/dht/module/cs.c:273
+msgid "Enables efficient non-anonymous routing"
+msgstr ""
+
+#: src/applications/identity/hostkey.c:155
+#, c-format
+msgid ""
+"Existing hostkey in file `%s' failed format check, creating new hostkey.\n"
+msgstr ""
+"Format├╝berpr├╝fung schlug f├╝r die existierende Hostkeydatei `%s' fehl, es "
+"wird ein neuer Hostkey erzeugt.\n"
+
+#: src/applications/identity/hostkey.c:164
+msgid "Creating new hostkey (this may take a while).\n"
+msgstr "Ein neuer Hostkey wird erzeugt (dies kann eine Weile dauern).\n"
+
+#: src/applications/identity/hostkey.c:176
+msgid "Done creating hostkey.\n"
+msgstr "Hostkey wurde erfolgreich erzeugt.\n"
+
+#: src/applications/identity/identity.c:333
+#, c-format
+msgid ""
+"File `%s' in directory `%s' does not match naming convention. Removed.\n"
+msgstr ""
+"Die Datei `%s' im Verzeichnis `%s' entspricht nicht der Namenskonvention. "
+"Datei wurde entfernt.\n"
+
+#: src/applications/identity/identity.c:408
+#, fuzzy, c-format
+msgid "Still no peers found in `%s'!\n"
+msgstr "Dienst `%s' konnte nicht ordentlich entladen werden!\n"
+
+#: src/applications/identity/identity.c:731
+#: src/applications/identity/identity.c:757
+#, fuzzy, c-format
+msgid "Removed file `%s' containing invalid HELLO data.\n"
+msgstr "Datei `%s' enthielt ung├╝ltige Hello Daten und wurde entfernt.\n"
+
+#: src/applications/identity/identity.c:809
+#, c-format
+msgid "Signature failed verification: peer `%s' not known.\n"
+msgstr ""
+"Signatur kann nicht verifiziert werden, der Knoten `%s' ist uns nicht "
+"bekannt!\n"
+
+#: src/applications/identity/identity.c:819
+msgid "Signature failed verification: signature invalid.\n"
+msgstr "Verifikation einer Signatur fehlgeschlagen: Signatur ist ung├╝ltig.\n"
+
+#: src/applications/identity/identity.c:935
+#: src/applications/identity/identity.c:1058
+#, c-format
+msgid "Peer `%s' is currently strictly blacklisted (for another %llums).\n"
+msgstr ""
+
+#: src/applications/identity/identity.c:1061
+#, c-format
+msgid "Peer `%s' is currently blacklisted (for another %llums).\n"
+msgstr ""
+
+#: src/applications/pingpong/pingpong.c:134
+#: src/applications/pingpong/pingpong.c:203
+#: src/applications/pingpong/pingpong.c:273
+#: src/applications/pingpong/pingpong.c:345
+#, c-format
+msgid "Received malformed `%s' message. Dropping.\n"
+msgstr "Besch├Ądigte `%s' Nachricht empfangen. Nachricht wird verworfen.\n"
+
+#: src/applications/pingpong/pingpong.c:146
+msgid "Received ping for another peer. Dropping.\n"
+msgstr "Ping f├╝r einen anderen Knoten empfangen. Ping wird verworfen.\n"
+
+#: src/applications/pingpong/pingpong.c:215
+#, fuzzy, c-format
+msgid "Received PING from `%s' not destined for us!\n"
+msgstr "Empfangener PING ist nicht an uns gerichtet!\n"
+
+#: src/applications/pingpong/pingpong.c:315
+#: src/applications/pingpong/pingpong.c:381
+msgid ""
+"Could not match PONG against any PING. Try increasing MAX_PING_PONG "
+"constant.\n"
+msgstr ""
+"PONG konnte keinem PING zugeordnet werden. Versuchen Sie die Konstante "
+"MAX_PING_PONG hochzusetzen.\n"
+
+#: src/applications/pingpong/pingpong.c:425
+msgid "Cannot create PING, table full. Try increasing MAX_PING_PONG.\n"
+msgstr ""
+"PING konnte nicht erstellt werden, da die Tabelle voll ist. Versuchen Sie, "
+"die Konstante MAX_PING_PONG hochzusetzen.\n"
+
+#: src/applications/pingpong/pingpong.c:518
+msgid "# encrypted PONG messages received"
+msgstr "# verschl├╝sselter PONG Nachrichten empfangen"
+
+#: src/applications/pingpong/pingpong.c:520
+msgid "# plaintext PONG messages received"
+msgstr "# Klartext PONG Nachrichten empfangen"
+
+#: src/applications/pingpong/pingpong.c:522
+msgid "# encrypted PING messages received"
+msgstr "# verschl├╝sselter PING Nachrichten empfangen"
+
+#: src/applications/pingpong/pingpong.c:524
+msgid "# PING messages created"
+msgstr "# PING Nachrichten erstellt"
+
+#: src/applications/pingpong/pingpong.c:526
+#: src/applications/session/connect.c:926
+msgid "# encrypted PONG messages sent"
+msgstr "# verschl├╝sselter PONG Nachrichten gesendet"
+
+#: src/applications/pingpong/pingpong.c:530
+#: src/applications/session/connect.c:924
+msgid "# encrypted PING messages sent"
+msgstr "# verschl├╝sselter PING Nachrichten gesendet"
+
+#: src/applications/pingpong/pingpong.c:532
+#, fuzzy
+msgid "# plaintext PONG messages sent"
+msgstr "# Klartext PING Nachrichten gesendet"
+
+#: src/applications/pingpong/pingpong.c:536
+#, fuzzy
+msgid "# plaintext PONG transmissions failed"
+msgstr "# Klartext PONG Nachrichten empfangen"
+
+#: src/applications/pingpong/pingpong.c:546
+#, c-format
+msgid "`%s' registering handlers %d %d (plaintext and ciphertext)\n"
+msgstr "`%s' registriert Handler %d %d (Plaintext und Ciphertext)\n"
+
+#: src/applications/hostlist/hostlist.c:165
+#, fuzzy
+msgid "# hostlist requests received"
+msgstr "# Client Trace-Anfragen empfangen"
+
+#: src/applications/hostlist/hostlist.c:167
+msgid "# hostlist HELLOs returned"
+msgstr ""
+
+#: src/applications/hostlist/hostlist.c:169
+msgid "# hostlist bytes returned"
+msgstr ""
+
+#: src/applications/hostlist/hostlist.c:199
+msgid "integrated HTTP hostlist server"
+msgstr ""
+
+#: src/applications/session/connect.c:238
+#, c-format
+msgid "Session key from peer `%s' could not be verified.\n"
+msgstr "Sitzungsschl├╝ssel von Knoten `%s' konnte nicht ├╝berpr├╝ft werden.\n"
+
+#: src/applications/session/connect.c:282
+#, c-format
+msgid "Cannot encrypt sessionkey, peer `%s' not known!\n"
+msgstr ""
+"Sitzungsschl├╝ssel kann nicht verschl├╝sselt werden, Knoten `%s' ist uns nicht "
+"bekannt!\n"
+
+#: src/applications/session/connect.c:489
+#, fuzzy, c-format
+msgid "Could not create any HELLO for myself (have transports `%s')!\n"
+msgstr "Hostkey konnte nicht erzeugt werden!\n"
+
+#: src/applications/session/connect.c:599
+#, fuzzy, c-format
+msgid "Session key received from peer `%s' has invalid format (discarded).\n"
+msgstr "Empfangene Nachricht ist ung├╝ltig.\n"
+
+#: src/applications/session/connect.c:632
+#, fuzzy, c-format
+msgid "Session key received from peer `%s' is for `%s' and not for me!\n"
+msgstr "Empfangene Nachricht ist ung├╝ltig.\n"
+
+#: src/applications/session/connect.c:659
+#, c-format
+msgid "Invalid `%s' message received from peer `%s'.\n"
+msgstr "Ung├╝ltige `%s' Nachricht von Knoten `%s' empfangen.\n"
+
+#: src/applications/session/connect.c:670
+#, c-format
+msgid "setkey `%s' from `%s' fails CRC check (have: %u, want %u).\n"
+msgstr ""
+"setkey `%s' von `%s' hat eine ung├╝ltige CRC Pr├╝fsumme (tats├Ąchlich: %u, "
+"erwartet: %u).\n"
+
+#: src/applications/session/connect.c:728
+#, fuzzy, c-format
+msgid ""
+"Error parsing encrypted session key from `%s', given message part size is "
+"invalid.\n"
+msgstr ""
+"Fehler beim Parsen des Verschl├╝sselten Sitzungsschl├╝ssels, gegebene "
+"Nachrichtenteilgr├Â├če ist ung├╝ltig.\n"
+
+#: src/applications/session/connect.c:741
+#, fuzzy, c-format
+msgid "Unknown type in embedded message from `%s': %u (size: %u)\n"
+msgstr "Unbekannter Typ in engebetteter Nachricht: %u (%u bytes)\n"
+
+#: src/applications/session/connect.c:916
+msgid "# session keys sent"
+msgstr "# Sitzungsschl├╝ssel gesendet"
+
+#: src/applications/session/connect.c:918
+msgid "# session keys rejected"
+msgstr "# Sitzungsschl├╝ssel abgelehnt"
+
+#: src/applications/session/connect.c:920
+msgid "# session keys accepted"
+msgstr "# Sitzungsschl├╝ssel akzeptiert"
+
+#: src/applications/session/connect.c:922
+msgid "# sessions established"
+msgstr "# Sitzungen aufgebaut"
+
+#: src/applications/fs/tools/gnunet-pseudonym.c:70
+#: src/applications/fs/tools/gnunet-auto-share.c:199
+#: src/applications/fs/tools/gnunet-insert.c:246
+#: src/applications/fs/tools/gnunet-search.c:125
+#: src/applications/fs/tools/gnunet-download.c:77
+msgid "set the desired LEVEL of sender-anonymity"
+msgstr "Gew├╝nschten Grad an Sender-Anonymit├Ąt festlegen"
+
+#: src/applications/fs/tools/gnunet-pseudonym.c:73
+msgid "automate creation of a namespace by starting a collection"
+msgstr ""
+"Erstellung eines Namespaces durch das Anfangen einer Collection "
+"automatisieren"
+
+#: src/applications/fs/tools/gnunet-pseudonym.c:77
+msgid "create a new pseudonym under the given NICKNAME"
+msgstr "Neues Pseudonym unter dem angegebenen NICKNAME erstellen"
+
+#: src/applications/fs/tools/gnunet-pseudonym.c:80
+msgid "delete the pseudonym with the given NICKNAME"
+msgstr "Pseudonym mit dem angegeben NICKNAME l├Âschen"
+
+#: src/applications/fs/tools/gnunet-pseudonym.c:83
+msgid "end automated building of a namespace (ends collection)"
+msgstr ""
+"Automatisierte Erstellung eines Namespaces beenden (beendet Collection)"
+
+#: src/applications/fs/tools/gnunet-pseudonym.c:85
+msgid "Create new pseudonyms, delete pseudonyms or list existing pseudonyms."
+msgstr ""
+"Erstellen von neuen Pseudonymen, L├Âschen von Pseudonymen und Auflisten von "
+"bestehenden Pseudonymen."
+
+#: src/applications/fs/tools/gnunet-pseudonym.c:89
+msgid ""
+"use the given keyword to advertise the namespace (use when creating a new "
+"pseudonym)"
+msgstr ""
+"Das angegebene schl├╝sselwort verwenden, um den Namespace bekanntzumachen (zu "
+"verwenden, wenn ein neues Pseudonym erstellt wird)"
+
+#: src/applications/fs/tools/gnunet-pseudonym.c:92
+#, fuzzy
+msgid "specify metadata describing the namespace or collection"
+msgstr ""
+"Automatisierte Erstellung eines Namespaces beenden (beendet Collection)"
+
+#: src/applications/fs/tools/gnunet-pseudonym.c:96
+msgid ""
+"do not generate an advertisement for this namespace (use when creating a new "
+"pseudonym)"
+msgstr ""
+"Keine Bekanntmachung f├╝r diesen Namespace erstellen (zu verwenden, wenn ein "
+"neues Pseudonym erstellt wird)"
+
+#: src/applications/fs/tools/gnunet-pseudonym.c:99
+msgid "do not list the pseudonyms from the pseudonym database"
+msgstr "Keine Ausgabe der Pseudonyme in der Pseudonymdatenbank"
+
+#: src/applications/fs/tools/gnunet-pseudonym.c:103
+msgid ""
+"specify IDENTIFIER to be the address of the entrypoint to content in the "
+"namespace (use when creating a new pseudonym)"
+msgstr ""
+"IDENTIFIER als Adresse angeben, die der Einsprungspunkt zu den Inhalten im "
+"Namespace ist (zu verwenden, wenn ein neues Pseudonym erstellt wird)"
+
+#: src/applications/fs/tools/gnunet-pseudonym.c:106
+msgid "set the rating of a namespace"
+msgstr "das Rating eines Namespaces setzen"
+
+#: src/applications/fs/tools/gnunet-pseudonym.c:141
+#, c-format
+msgid "Namespace `%s' has rating %d.\n"
+msgstr "Namespace `%s' hat das Rating %d.\n"
+
+#: src/applications/fs/tools/gnunet-pseudonym.c:143
+#, c-format
+msgid "Namespace `%s' (%s) has rating %d.\n"
+msgstr "Namespace `%s' (%s) hat das Rating %d.\n"
+
+#: src/applications/fs/tools/gnunet-pseudonym.c:175
+#, c-format
+msgid "\tRating (after update): %d\n"
+msgstr "\tRating (nach Update): %d\n"
+
+#: src/applications/fs/tools/gnunet-pseudonym.c:179
+#: src/applications/fs/tools/gnunet-pseudonym.c:241
+#: src/applications/fs/tools/gnunet-insert.c:101
+#, fuzzy, c-format
+msgid "\tUnknown namespace `%s'\n"
+msgstr "Unbekannte Operation `%s'\n"
+
+#: src/