summaryrefslogtreecommitdiff
path: root/src/microhttpd/test_helpers.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/microhttpd/test_helpers.h')
-rw-r--r--src/microhttpd/test_helpers.h91
1 files changed, 91 insertions, 0 deletions
diff --git a/src/microhttpd/test_helpers.h b/src/microhttpd/test_helpers.h
new file mode 100644
index 00000000..c3f0f7be
--- /dev/null
+++ b/src/microhttpd/test_helpers.h
@@ -0,0 +1,91 @@
+/*
+ This file is part of libmicrohttpd
+ Copyright (C) 2016 Karlson2k (Evgeny Grin)
+
+ This library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Lesser General Public
+ License as published by the Free Software Foundation; either
+ version 2.1 of the License, or (at your option) any later version.
+
+ This library 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with this library; if not, write to the Free Software
+ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+*/
+
+/**
+ * @file microhttpd/test_helpers.h
+ * @brief Static functions and macros helpers for testsuite.
+ * @author Karlson2k (Evgeny Grin)
+ */
+
+#include <string.h>
+
+/**
+ * Check whether program name contains specific @a marker string.
+ * Only last component in pathname is checked for marker presence,
+ * all leading directories names (if any) are ignored. Directories
+ * separators are handled correctly on both non-W32 and W32
+ * platforms.
+ * @param prog_name program name, may include path
+ * @param marker marker to look for.
+ * @return zero if any parameter is NULL or empty string or
+ * @prog_name ends with slash or @marker is not found in
+ * program name, non-zero if @maker is found in program
+ * name.
+ */
+static int
+has_in_name(const char *prog_name, const char *marker)
+{
+ size_t name_pos;
+ size_t pos;
+
+ if (!prog_name || !marker || !prog_name[0] || !marker[0])
+ return 0;
+
+ pos = 0;
+ name_pos = 0;
+ while (prog_name[pos])
+ {
+ if ('/' == prog_name[pos])
+ name_pos = pos + 1;
+#ifdef _WIN32
+ else if ('\\' == prog_name[pos])
+ name_pos = pos + 1;
+#endif /* _WIN32 */
+ pos++;
+ }
+ if (name_pos == pos)
+ return 0;
+ return strstr(prog_name + name_pos, marker) != (char*)0;
+}
+
+/**
+ * Check whether one of strings in array is equal to @a param.
+ * String @a argv[0] is ignored.
+ * @param argc number of strings in @a argv, as passed to main function
+ * @param argv array of strings, as passed to main function
+ * @param param parameter to look for.
+ * @return zero if @a argv is NULL, @a param is NULL or empty string,
+ * @a argc is less then 2 or @a param is not found in @a argv,
+ * non-zero if one of strings in @a argv is equal to @a param.
+ */
+static int
+has_param(int argc, char * const argv[], const char * param)
+{
+ int i;
+ if (!argv || !param || !param[0])
+ return 0;
+
+ for(i = 1; i < argc; i++)
+ {
+ if(argv[i] && strcmp(argv[i], param) == 0)
+ return !0;
+ }
+
+ return 0;
+}