/*
* This file is part of GNUnet
* (C) 2012 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 3, 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,
* @file src/regex/regex_test_lib.c
* @brief library to read regexes representing IP networks from a file.
* and simplyfinying the into one big regex, in order to run
- * tests (regex performance, mesh profiler).
+ * tests (regex performance, cadet profiler).
* @author Bartlomiej Polot
*/
{
GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, "empty, returning ''\n");
GNUNET_free (regex);
- return GNUNET_strdup (ctx->s);
+ return NULL == ctx->s ? NULL : GNUNET_strdup (ctx->s);
}
if ('|' == regex[len - 1])
/**
* Get the number of matching characters on the prefix of both strings.
- *
+ *
* @param s1 String 1.
* @param s2 String 2.
- *
+ *
* @return Number of characters of matching prefix.
*/
static unsigned int
/**
* Return the child context with the longest prefix match with the regex.
* Usually only one child will match, search all just in case.
- *
+ *
* @param ctx Context whose children to search.
* @param regex String to match.
- *
+ *
* @return Child with the longest prefix, NULL if no child matches.
*/
static struct RegexCombineCtx *
len = strlen (p->s);
if (prefix_l < len) /* only partial match, split existing state */
{
- newctx = GNUNET_malloc (sizeof (struct RegexCombineCtx));
+ newctx = GNUNET_new (struct RegexCombineCtx);
newctx->head = p->head;
newctx->tail = p->tail;
newctx->s = GNUNET_malloc(len - prefix_l + 1);
if (NULL == ctx->head && NULL != ctx->s)
{
/* this was the end before, add empty string */
- newctx = GNUNET_malloc (sizeof (struct RegexCombineCtx));
+ newctx = GNUNET_new (struct RegexCombineCtx);
newctx->s = GNUNET_strdup ("");
GNUNET_CONTAINER_DLL_insert (ctx->head, ctx->tail, newctx);
}
GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, " no match\n");
GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, " new state %s\n", regex);
GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, " under %s\n", ctx->s);
- newctx = GNUNET_malloc (sizeof (struct RegexCombineCtx));
+ newctx = GNUNET_new (struct RegexCombineCtx);
newctx->s = GNUNET_strdup (regex);
GNUNET_CONTAINER_DLL_insert (ctx->head, ctx->tail, newctx);
}
* This function DOES NOT support arbitrary regex combining.
*/
char *
-REGEX_ITERNAL_combine (char * const regexes[])
+REGEX_TEST_combine (char * const regexes[])
{
unsigned int i;
char *combined;
const char *current;
struct RegexCombineCtx *ctx;
- ctx = GNUNET_malloc (sizeof (struct RegexCombineCtx));
+ ctx = GNUNET_new (struct RegexCombineCtx);
for (i = 0; regexes[i]; i++)
{
current = regexes[i];
/**
* Read a set of regexes from a file, one per line and return them in an array
- * suitable for REGEX_ITERNAL_combine.
- * The array must be free'd using REGEX_ITERNAL_free_from_file.
+ * suitable for REGEX_TEST_combine.
+ * The array must be free'd using REGEX_TEST_free_from_file.
*
* @param filename Name of the file containing the regexes.
*
* @return A newly allocated, NULL terminated array of regexes.
*/
char **
-REGEX_ITERNAL_read_from_file (const char *filename)
+REGEX_TEST_read_from_file (const char *filename)
{
struct GNUNET_DISK_FileHandle *f;
unsigned int nr;
unsigned int offset;
- OFF_T size;
+ off_t size;
size_t len;
char *buffer;
char *regex;
offset += len + 1;
if (len < 1)
continue;
- if (len < 6 || strncmp (®ex[len - 6], "(0|1)*", 6) != 0)
- {
- GNUNET_log (GNUNET_ERROR_TYPE_WARNING,
- "%s (line %u) does not end in \"(0|1)*\"\n",
- buffer, nr);
- }
- else
- {
- len -= 6;
- regex[len] = '\0';
- }
+ regex[len] = '\0';
regex = GNUNET_realloc (regex, len + 1);
GNUNET_array_grow (regexes, nr, nr + 1);
GNUNET_assert (NULL == regexes[nr - 2]);
* @param regexes NULL-terminated array of regexes.
*/
void
-REGEX_ITERNAL_free_from_file (char **regexes)
+REGEX_TEST_free_from_file (char **regexes)
{
unsigned int i;