From: Christian Grothoff Date: Fri, 25 Jun 2010 15:37:07 +0000 (+0000) Subject: cleaning argz mess X-Git-Tag: initial-import-from-subversion-38251~21210 X-Git-Url: https://git.librecmc.org/?a=commitdiff_plain;h=94f01bdd2fda575769f01f8072689fa6936af8f4;p=oweals%2Fgnunet.git cleaning argz mess --- diff --git a/src/util/Makefile.am b/src/util/Makefile.am index 66259b3eb..9cc402fc5 100644 --- a/src/util/Makefile.am +++ b/src/util/Makefile.am @@ -29,7 +29,6 @@ libgnunetutil_la_SOURCES = \ client.c \ common_allocation.c \ common_endian.c \ - common_gettext.c \ common_logging.c \ configuration.c \ connection.c \ @@ -370,10 +369,6 @@ perf_crypto_hash_LDADD = \ EXTRA_DIST = \ - program_lib_argz.c \ - program_lib_strndup.c \ - program_lib_strnlen.c \ - program_lib_mempcpy.c \ test_configuration_data.conf \ test_program_data.conf \ test_pseudonym_data.conf \ diff --git a/src/util/common_gettext.c b/src/util/common_gettext.c deleted file mode 100644 index ad347e160..000000000 --- a/src/util/common_gettext.c +++ /dev/null @@ -1,42 +0,0 @@ -/* - This file is part of GNUnet. - (C) 2008 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. -*/ - -/** - * @file util/common_gettext.c - * @brief gettext init routine - * @author Heikki Lindholm - */ -#include "platform.h" -#include "gnunet_common.h" -#include "gnunet_os_lib.h" - -void __attribute__ ((constructor)) GNUNET_util_generic_ltdl_init () -{ -#if ENABLE_NLS - char *path; - - path = GNUNET_OS_installation_get_path (GNUNET_OS_IPK_LOCALEDIR); - if (path != NULL) - { - BINDTEXTDOMAIN ("GNUnet", path); - GNUNET_free (path); - } -#endif -} diff --git a/src/util/common_logging.c b/src/util/common_logging.c index 139e9ee3f..7bd39c7ca 100644 --- a/src/util/common_logging.c +++ b/src/util/common_logging.c @@ -571,6 +571,20 @@ GNUNET_a2s (const struct sockaddr *addr, socklen_t addrlen) void __attribute__ ((constructor)) GNUNET_util_cl_init () { GNUNET_stderr = stderr; +#ifdef MINGW + InitWinEnv (NULL); +#endif +} + + +/** + * Destructor + */ +void __attribute__ ((destructor)) GNUNET_util_cl_fini () +{ +#ifdef MINGW + ShutdownWinEnv (); +#endif } /* end of common_logging.c */ diff --git a/src/util/connection.c b/src/util/connection.c index b67da814a..1631718e7 100644 --- a/src/util/connection.c +++ b/src/util/connection.c @@ -726,11 +726,11 @@ connect_probe_continuation (void *cls, len = sizeof (error); errno = 0; error = 0; - if ((0 == (tc->reason & GNUNET_SCHEDULER_REASON_WRITE_READY)) || - (GNUNET_OK != - GNUNET_NETWORK_socket_getsockopt (ap->sock, SOL_SOCKET, SO_ERROR, - &error, &len)) || (error != 0) - || (errno != 0)) + if ( (0 == (tc->reason & GNUNET_SCHEDULER_REASON_WRITE_READY)) || + (GNUNET_OK != + GNUNET_NETWORK_socket_getsockopt (ap->sock, SOL_SOCKET, SO_ERROR, + &error, &len)) || + (error != 0) ) { GNUNET_break (GNUNET_OK == GNUNET_NETWORK_socket_close (ap->sock)); GNUNET_free (ap); diff --git a/src/util/crypto_crc.c b/src/util/crypto_crc.c index a89b059c5..8f5cfc800 100644 --- a/src/util/crypto_crc.c +++ b/src/util/crypto_crc.c @@ -52,10 +52,16 @@ static uLong crc_table[256]; * with the ccorrect final value. Thus, it is safe to call * even on a table that someone else is using concurrently. */ -void __attribute__ ((constructor)) GNUNET_CRYPTO_crc_init () +static void +crc_init () { + static int once; unsigned int i, j; uLong h = 1; + + if (once) + return; + once = 1; crc_table[0] = 0; for (i = 128; i; i >>= 1) { @@ -79,6 +85,7 @@ void __attribute__ ((constructor)) GNUNET_CRYPTO_crc_init () static uLong crc32 (uLong crc, const char *buf, size_t len) { + crc_init (); GNUNET_assert (crc_table[255] != 0); crc ^= 0xffffffff; while (len--) diff --git a/src/util/crypto_ksk.c b/src/util/crypto_ksk.c index 888c08384..1aa493ca8 100644 --- a/src/util/crypto_ksk.c +++ b/src/util/crypto_ksk.c @@ -684,8 +684,6 @@ ksk_decode_key (const struct KskRsaPrivateKeyBinaryEncoded *encoding) } - - typedef struct { GNUNET_HashCode hc; @@ -693,6 +691,7 @@ typedef struct } KBlockKeyCacheLine; static KBlockKeyCacheLine **cache; + static unsigned int cacheSize; /** @@ -724,92 +723,6 @@ GNUNET_CRYPTO_rsa_key_create_from_hash (const GNUNET_HashCode * hc) } -/** - * Process ID of the "find" process that we use for - * entropy gathering. - */ -static pid_t genproc; - -/** - * Function called by libgcrypt whenever we are - * blocked gathering entropy. - */ -static void -entropy_generator (void *cls, - const char *what, int printchar, int current, int total) -{ - unsigned long code; - enum GNUNET_OS_ProcessStatusType type; - int ret; - - if (0 != strcmp (what, "need_entropy")) - return; - if (current == total) - { - if (genproc != 0) - { - if (0 != PLIBC_KILL (genproc, SIGTERM)) - GNUNET_log_strerror (GNUNET_ERROR_TYPE_ERROR, "kill"); - GNUNET_break (GNUNET_OK == GNUNET_OS_process_wait (genproc)); - genproc = 0; - } - return; - } - if (genproc != 0) - { - ret = GNUNET_OS_process_status (genproc, &type, &code); - if (ret == GNUNET_NO) - return; /* still running */ - if (ret == GNUNET_SYSERR) - { - GNUNET_break (0); - return; - } - if (0 != PLIBC_KILL (genproc, SIGTERM)) - GNUNET_log_strerror (GNUNET_ERROR_TYPE_ERROR, "kill"); - GNUNET_break (GNUNET_OK == GNUNET_OS_process_wait (genproc)); - genproc = 0; - } - GNUNET_log (GNUNET_ERROR_TYPE_INFO, - _("Starting `%s' process to generate entropy\n"), "find"); - genproc = GNUNET_OS_start_process (NULL, NULL, "sh", - "sh", - "-c", - "exec find / -mount -type f -exec cp {} /dev/null \\; 2>/dev/null", - NULL); -} - - -static void -killfind () -{ - if (genproc != 0) - { - PLIBC_KILL (genproc, SIGKILL); - genproc = 0; - } -} - - -void __attribute__ ((constructor)) GNUNET_CRYPTO_ksk_init () -{ - gcry_control (GCRYCTL_DISABLE_SECMEM, 0); - if (!gcry_check_version (GCRYPT_VERSION)) - { - fprintf (stderr, - _ - ("libgcrypt has not the expected version (version %s is required).\n"), - GCRYPT_VERSION); - abort (); - } -#ifdef gcry_fast_random_poll - gcry_fast_random_poll (); -#endif - gcry_set_progress_handler (&entropy_generator, NULL); - atexit (&killfind); -} - - void __attribute__ ((destructor)) GNUNET_CRYPTO_ksk_fini () { int i; @@ -820,7 +733,7 @@ void __attribute__ ((destructor)) GNUNET_CRYPTO_ksk_fini () GNUNET_free (cache[i]); } GNUNET_array_grow (cache, cacheSize, 0); - gcry_set_progress_handler (NULL, NULL); } -/* end of kblockkey.c */ + +/* end of crypto_ksk.c */ diff --git a/src/util/crypto_random.c b/src/util/crypto_random.c index 25ba4db2a..0a092cdcc 100644 --- a/src/util/crypto_random.c +++ b/src/util/crypto_random.c @@ -27,6 +27,7 @@ #include "platform.h" #include "gnunet_common.h" #include "gnunet_crypto_lib.h" +#include "gnunet_os_lib.h" #include /** @@ -161,12 +162,99 @@ GNUNET_CRYPTO_random_disable_entropy_gathering () gcry_control (GCRYCTL_ENABLE_QUICK_RANDOM, 0); } + +/** + * Process ID of the "find" process that we use for + * entropy gathering. + */ +static pid_t genproc; + /** - * Initializer + * Function called by libgcrypt whenever we are + * blocked gathering entropy. */ -void __attribute__ ((constructor)) GNUNET_util_random_init () +static void +entropy_generator (void *cls, + const char *what, int printchar, int current, int total) +{ + unsigned long code; + enum GNUNET_OS_ProcessStatusType type; + int ret; + + if (0 != strcmp (what, "need_entropy")) + return; + if (current == total) + { + if (genproc != 0) + { + if (0 != PLIBC_KILL (genproc, SIGTERM)) + GNUNET_log_strerror (GNUNET_ERROR_TYPE_ERROR, "kill"); + GNUNET_break (GNUNET_OK == GNUNET_OS_process_wait (genproc)); + genproc = 0; + } + return; + } + if (genproc != 0) + { + ret = GNUNET_OS_process_status (genproc, &type, &code); + if (ret == GNUNET_NO) + return; /* still running */ + if (ret == GNUNET_SYSERR) + { + GNUNET_break (0); + return; + } + if (0 != PLIBC_KILL (genproc, SIGTERM)) + GNUNET_log_strerror (GNUNET_ERROR_TYPE_ERROR, "kill"); + GNUNET_break (GNUNET_OK == GNUNET_OS_process_wait (genproc)); + genproc = 0; + } + GNUNET_log (GNUNET_ERROR_TYPE_INFO, + _("Starting `%s' process to generate entropy\n"), "find"); + genproc = GNUNET_OS_start_process (NULL, NULL, "sh", + "sh", + "-c", + "exec find / -mount -type f -exec cp {} /dev/null \\; 2>/dev/null", + NULL); +} + + +static void +killfind () +{ + if (genproc != 0) + { + PLIBC_KILL (genproc, SIGKILL); + genproc = 0; + } +} + + +void __attribute__ ((constructor)) GNUNET_CRYPTO_random_init () { SRANDOM (time (NULL)); + gcry_control (GCRYCTL_DISABLE_SECMEM, 0); + if (!gcry_check_version (GCRYPT_VERSION)) + { + fprintf (stderr, + _ + ("libgcrypt has not the expected version (version %s is required).\n"), + GCRYPT_VERSION); + abort (); + } +#ifdef gcry_fast_random_poll + gcry_fast_random_poll (); +#endif + gcry_set_progress_handler (&entropy_generator, NULL); + atexit (&killfind); } + +void __attribute__ ((destructor)) GNUNET_CRYPTO_random_fini () +{ + gcry_set_progress_handler (NULL, NULL); +} + + + /* end of crypto_random.c */ diff --git a/src/util/os_load.c b/src/util/os_load.c index f7b5dff96..e54147ff4 100644 --- a/src/util/os_load.c +++ b/src/util/os_load.c @@ -156,9 +156,10 @@ updateUsage () unsigned long long usage_time = 0, total_time = 1; /* Get the first line with the data */ + memset (line, 0, sizeof (line)); rewind (proc_stat); fflush (proc_stat); - if (NULL == fgets (line, 256, proc_stat)) + if (NULL == fgets (line, sizeof (line), proc_stat)) { GNUNET_log_strerror_file (GNUNET_ERROR_TYPE_ERROR | GNUNET_ERROR_TYPE_BULK, diff --git a/src/util/plugin.c b/src/util/plugin.c index 36380f339..ca93e9ca0 100644 --- a/src/util/plugin.c +++ b/src/util/plugin.c @@ -52,6 +52,12 @@ struct PluginList }; +/** + * Have we been initialized? + */ +static int initialized; + + /** * Libtool search path before we started. */ @@ -67,17 +73,14 @@ static struct PluginList *plugins; /** * Setup libtool paths. */ -void __attribute__ ((constructor)) GNUNET_PLUGIN_init () +static void +plugin_init () { int err; const char *opath; char *path; char *cpath; -#ifdef MINGW - InitWinEnv (NULL); -#endif - err = lt_dlinit (); if (err > 0) { @@ -114,7 +117,8 @@ void __attribute__ ((constructor)) GNUNET_PLUGIN_init () /** * Shutdown libtool. */ -void __attribute__ ((destructor)) GNUNET_PLUGIN_fini () +static void +plugin_fini () { lt_dlsetsearchpath (old_dlsearchpath); if (old_dlsearchpath != NULL) @@ -122,11 +126,6 @@ void __attribute__ ((destructor)) GNUNET_PLUGIN_fini () GNUNET_free (old_dlsearchpath); old_dlsearchpath = NULL; } - -#ifdef MINGW - ShutdownWinEnv (); -#endif - lt_dlexit (); } @@ -173,6 +172,11 @@ GNUNET_PLUGIN_load (const char *library_name, void *arg) GNUNET_PLUGIN_Callback init; void *ret; + if (! initialized) + { + initialized = GNUNET_YES; + plugin_init (); + } libhandle = lt_dlopenext (library_name); if (libhandle == NULL) { @@ -235,6 +239,11 @@ GNUNET_PLUGIN_unload (const char *library_name, void *arg) lt_dlclose (pos->handle); GNUNET_free (pos->name); GNUNET_free (pos); + if (plugins == NULL) + { + plugin_fini(); + initialized = GNUNET_NO; + } return ret; } diff --git a/src/util/program.c b/src/util/program.c index bbedc05d0..88b67a21e 100644 --- a/src/util/program.c +++ b/src/util/program.c @@ -35,15 +35,6 @@ #include "gnunet_scheduler_lib.h" #include -#if HAVE_ARGZ_H -#include -#else -#include "program_lib_strnlen.c" -#include "program_lib_strndup.c" -#include "program_lib_mempcpy.c" -#include "program_lib_argz.c" -#endif - /** * Context for the command. */ @@ -156,19 +147,27 @@ GNUNET_PROGRAM_run (int argc, gargs = getenv ("GNUNET_ARGS"); if (gargs != NULL) { - char *gargz; - size_t gargl; char **gargv; + unsigned int gargc; int i; - - argz_create_sep (gargs, ' ', &gargz, &gargl); + char *tok; + char *cargs; + + gargv = NULL; + gargc = 0; for (i=0;i -#include -#include - - - -/* Add BUF, of length BUF_LEN to the argz vector in ARGZ & ARGZ_LEN. */ -error_t -argz_append (char **argz, size_t *argz_len, const char *buf, size_t buf_len) -{ - size_t new_argz_len = *argz_len + buf_len; - char *new_argz = realloc (*argz, new_argz_len); - if (new_argz) - { - memcpy (new_argz + *argz_len, buf, buf_len); - *argz = new_argz; - *argz_len = new_argz_len; - return 0; - } - else - return ENOMEM; -} - -/* Add STR to the argz vector in ARGZ & ARGZ_LEN. This should be moved into - argz.c in libshouldbelibc. */ -error_t -argz_add (char **argz, size_t *argz_len, const char *str) -{ - return argz_append (argz, argz_len, str, strlen (str) + 1); -} - - - -error_t -argz_add_sep (char **argz, size_t *argz_len, const char *string, int delim) -{ - size_t nlen = strlen (string) + 1; - - if (nlen > 1) - { - const char *rp; - char *wp; - - *argz = (char *) realloc (*argz, *argz_len + nlen); - if (*argz == NULL) - return ENOMEM; - - wp = *argz + *argz_len; - rp = string; - do - if (*rp == delim) - { - if (wp > *argz && wp[-1] != '\0') - *wp++ = '\0'; - else - --nlen; - } - else - *wp++ = *rp; - while (*rp++ != '\0'); - - *argz_len += nlen; - } - - return 0; -} - - - -error_t -argz_create_sep (const char *string, int delim, char **argz, size_t *len) -{ - size_t nlen = strlen (string) + 1; - - if (nlen > 1) - { - const char *rp; - char *wp; - - *argz = (char *) malloc (nlen); - if (*argz == NULL) - return ENOMEM; - - rp = string; - wp = *argz; - do - if (*rp == delim) - { - if (wp > *argz && wp[-1] != '\0') - *wp++ = '\0'; - else - --nlen; - } - else - *wp++ = *rp; - while (*rp++ != '\0'); - - if (nlen == 0) - { - free (*argz); - *argz = NULL; - *len = 0; - } - - *len = nlen; - } - else - { - *argz = NULL; - *len = 0; - } - - return 0; -} - - -/* Insert ENTRY into ARGZ & ARGZ_LEN before BEFORE, which should be an - existing entry in ARGZ; if BEFORE is NULL, ENTRY is appended to the end. - Since ARGZ's first entry is the same as ARGZ, argz_insert (ARGZ, ARGZ_LEN, - ARGZ, ENTRY) will insert ENTRY at the beginning of ARGZ. If BEFORE is not - in ARGZ, EINVAL is returned, else if memory can't be allocated for the new - ARGZ, ENOMEM is returned, else 0. */ -error_t -argz_insert (char **argz, size_t *argz_len, char *before, const char *entry) -{ - if (! before) - return argz_add (argz, argz_len, entry); - - if (before < *argz || before >= *argz + *argz_len) - return EINVAL; - - if (before > *argz) - /* Make sure before is actually the beginning of an entry. */ - while (before[-1]) - before--; - - { - size_t after_before = *argz_len - (before - *argz); - size_t entry_len = strlen (entry) + 1; - size_t new_argz_len = *argz_len + entry_len; - char *new_argz = realloc (*argz, new_argz_len); - - if (new_argz) - { - before = new_argz + (before - *argz); - memmove (before + entry_len, before, after_before); - memmove (before, entry, entry_len); - *argz = new_argz; - *argz_len = new_argz_len; - return 0; - } - else - return ENOMEM; - } -} - - -char * -argz_next (const char *argz, size_t argz_len, const char *entry) -{ - if (entry) - { - if (entry < argz + argz_len) - entry = strchr (entry, '\0') + 1; - - return entry >= argz + argz_len ? NULL : (char *) entry; - } - else - if (argz_len > 0) - return (char *) argz; - else - return NULL; -} - - -/* Make '\0' separated arg vector ARGZ printable by converting all the '\0's - except the last into the character SEP. */ -void -argz_stringify (char *argz, size_t len, int sep) -{ - if (len > 0) - while (1) - { - size_t part_len = strnlen (argz, len); - argz += part_len; - len -= part_len; - if (len-- <= 1) /* includes final '\0' we want to stop at */ - break; - *argz++ = sep; - } -} - - -/* Returns the number of strings in ARGZ. */ -size_t -argz_count (const char *argz, size_t len) -{ - size_t count = 0; - while (len > 0) - { - size_t part_len = strlen(argz); - argz += part_len + 1; - len -= part_len + 1; - count++; - } - return count; -} - - -/* Puts pointers to each string in ARGZ, plus a terminating 0 element, into - ARGV, which must be large enough to hold them all. */ -void -argz_extract (const char *argz, size_t len, char **argv) -{ - while (len > 0) - { - size_t part_len = strlen (argz); - *argv++ = (char *) argz; - argz += part_len + 1; - len -= part_len + 1; - } - *argv = 0; -} - - -/* Make a '\0' separated arg vector from a unix argv vector, returning it in - ARGZ, and the total length in LEN. If a memory allocation error occurs, - ENOMEM is returned, otherwise 0. */ -error_t -argz_create (char *const argv[], char **argz, size_t *len) -{ - int argc; - size_t tlen = 0; - char *const *ap; - char *p; - - for (argc = 0; argv[argc] != NULL; ++argc) - tlen += strlen (argv[argc]) + 1; - - if (tlen == 0) - *argz = NULL; - else - { - *argz = malloc (tlen); - if (*argz == NULL) - return ENOMEM; - - for (p = *argz, ap = argv; *ap; ++ap, ++p) - p = stpcpy (p, *ap); - } - *len = tlen; - - return 0; -} - - -/* Delete ENTRY from ARGZ & ARGZ_LEN, if any. */ -void -argz_delete (char **argz, size_t *argz_len, char *entry) -{ - if (entry) - /* Get rid of the old value for NAME. */ - { - size_t entry_len = strlen (entry) + 1; - *argz_len -= entry_len; - memmove (entry, entry + entry_len, *argz_len - (entry - *argz)); - if (*argz_len == 0) - { - free (*argz); - *argz = 0; - } - } -} - - -/* Append BUF, of length BUF_LEN to *TO, of length *TO_LEN, reallocating and - updating *TO & *TO_LEN appropriately. If an allocation error occurs, - *TO's old value is freed, and *TO is set to 0. */ -static void -str_append (char **to, size_t *to_len, const char *buf, const size_t buf_len) -{ - size_t new_len = *to_len + buf_len; - char *new_to = realloc (*to, new_len + 1); - - if (new_to) - { - *((char *) mempcpy (new_to + *to_len, buf, buf_len)) = '\0'; - *to = new_to; - *to_len = new_len; - } - else - { - free (*to); - *to = 0; - } -} - -/* Replace any occurrences of the string STR in ARGZ with WITH, reallocating - ARGZ as necessary. If REPLACE_COUNT is non-zero, *REPLACE_COUNT will be - incremented by number of replacements performed. */ -error_t -argz_replace (char **argz, size_t *argz_len, const char *str, const char *with, - unsigned *replace_count) -{ - error_t err = 0; - - if (str && *str) - { - char *arg = 0; - char *src = *argz; - size_t src_len = *argz_len; - char *dst = 0; - size_t dst_len = 0; - int delayed_copy = 1; /* True while we've avoided copying anything. */ - size_t str_len = strlen (str), with_len = strlen (with); - - while (!err && (arg = argz_next (src, src_len, arg))) - { - char *match = strstr (arg, str); - if (match) - { - char *from = match + str_len; - size_t to_len = match - arg; - char *to = strndup (arg, to_len); - - while (to && from) - { - str_append (&to, &to_len, with, with_len); - if (to) - { - match = strstr (from, str); - if (match) - { - str_append (&to, &to_len, from, match - from); - from = match + str_len; - } - else - { - str_append (&to, &to_len, from, strlen (from)); - from = 0; - } - } - } - - if (to) - { - if (delayed_copy) - /* We avoided copying SRC to DST until we found a match; - now that we've done so, copy everything from the start - of SRC. */ - { - if (arg > src) - err = argz_append (&dst, &dst_len, src, (arg - src)); - delayed_copy = 0; - } - if (! err) - err = argz_add (&dst, &dst_len, to); - free (to); - } - else - err = ENOMEM; - - if (replace_count) - (*replace_count)++; - } - else if (! delayed_copy) - err = argz_add (&dst, &dst_len, arg); - } - - if (! err) - { - if (! delayed_copy) - /* We never found any instances of str. */ - { - free (src); - *argz = dst; - *argz_len = dst_len; - } - } - else if (dst_len > 0) - free (dst); - } - - return err; -} diff --git a/src/util/program_lib_mempcpy.c b/src/util/program_lib_mempcpy.c deleted file mode 100644 index af0ed452e..000000000 --- a/src/util/program_lib_mempcpy.c +++ /dev/null @@ -1,27 +0,0 @@ -/* Copy memory area and return pointer after last written byte. - Copyright (C) 2003, 2007 Free Software Foundation, Inc. - - 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 2, 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, write to the Free Software Foundation, - Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */ - -/* Specification. */ -#include - -/* Copy N bytes of SRC to DEST, return pointer to bytes after the - last written byte. */ -void * -mempcpy (void *dest, const void *src, size_t n) -{ - return (char *) memcpy (dest, src, n) + n; -} diff --git a/src/util/program_lib_strndup.c b/src/util/program_lib_strndup.c deleted file mode 100644 index 8d071e0e4..000000000 --- a/src/util/program_lib_strndup.c +++ /dev/null @@ -1,35 +0,0 @@ -/* A replacement function, for systems that lack strndup. - - Copyright (C) 1996, 1997, 1998, 2001, 2002, 2003, 2005, 2006, 2007 - Free Software Foundation, Inc. - - 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 2, 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, write to the Free Software Foundation, - Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */ - -#include - -#include - -char * -strndup (char const *s, size_t n) -{ - size_t len = strnlen (s, n); - char *new = malloc (len + 1); - - if (new == NULL) - return NULL; - - new[len] = '\0'; - return memcpy (new, s, len); -} diff --git a/src/util/program_lib_strnlen.c b/src/util/program_lib_strnlen.c deleted file mode 100644 index 732c0f845..000000000 --- a/src/util/program_lib_strnlen.c +++ /dev/null @@ -1,29 +0,0 @@ -/* Find the length of STRING, but scan at most MAXLEN characters. - Copyright (C) 2005, 2006, 2007 Free Software Foundation, Inc. - Written by Simon Josefsson. - - 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 2, 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, write to the Free Software Foundation, - Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */ - -#include - -/* Find the length of STRING, but scan at most MAXLEN characters. - If no '\0' terminator is found in that many characters, return MAXLEN. */ - -size_t -strnlen (const char *string, size_t maxlen) -{ - const char *end = memchr (string, '\0', maxlen); - return end ? (size_t) (end - string) : maxlen; -} diff --git a/src/util/test_crypto_ksk.c b/src/util/test_crypto_ksk.c index c9a8e57dc..f3878a0ec 100644 --- a/src/util/test_crypto_ksk.c +++ b/src/util/test_crypto_ksk.c @@ -170,7 +170,7 @@ testSignVerify (struct GNUNET_CRYPTO_RsaPrivateKey *hostkey) } if (GNUNET_SYSERR != GNUNET_CRYPTO_rsa_verify - (GNUNET_SIGNATURE_PURPOSE_TRANSPORT_PING, &purp, &sig, &pkey)) + (GNUNET_SIGNATURE_PURPOSE_TRANSPORT_PONG_OWN, &purp, &sig, &pkey)) { printf ("GNUNET_CRYPTO_rsa_verify failed to fail!\n"); ok = GNUNET_SYSERR; diff --git a/src/util/test_crypto_rsa.c b/src/util/test_crypto_rsa.c index 1d88a697b..e836ad5bb 100644 --- a/src/util/test_crypto_rsa.c +++ b/src/util/test_crypto_rsa.c @@ -228,7 +228,7 @@ testSignVerify () } if (GNUNET_SYSERR != GNUNET_CRYPTO_rsa_verify - (GNUNET_SIGNATURE_PURPOSE_TRANSPORT_PING, &purp, &sig, &pkey)) + (GNUNET_SIGNATURE_PURPOSE_TRANSPORT_PONG_OWN, &purp, &sig, &pkey)) { printf ("GNUNET_CRYPTO_rsa_verify failed to fail!\n"); ok = GNUNET_SYSERR;