2 * ngIRCd -- The Next Generation IRC Daemon
3 * Copyright (c)2001-2014 Alexander Barton (alex@barton.de) and Contributors.
5 * This program is free software; you can redistribute it and/or modify
6 * it under the terms of the GNU General Public License as published by
7 * the Free Software Foundation; either version 2 of the License, or
8 * (at your option) any later version.
9 * Please read the file COPYING, README and AUTHORS for more information.
16 * Test program for portab.h and friends ;-)
24 int allow_severity = 0, deny_severity = 0;
29 /* Oops, something failed!? */
30 fprintf(stderr, "Oops, test for %s failed!?\n", Reason);
39 snprintf(str, sizeof(str), "%s", "1234567890");
41 Panic("snprintf NULL byte");
43 Panic("snprintf string length");
51 ptr = strdup("1234567890");
55 Panic("strdup NULL byte");
56 if (strlen(ptr) != 10)
57 Panic("strdup string length");
66 ptr = strndup("1234567890", 5);
70 Panic("strndup NULL byte");
72 Panic("strndup string length");
81 if (strlcpy(str, "1234567890", sizeof(str)) != 10)
82 Panic("strlcpy return code");
84 Panic("strlcpy NULL byte");
86 Panic("strlcpy string length");
94 if (strlcpy(str, "12", sizeof(str)) != 2)
95 Panic("strlcpy for strlcat");
96 if (strlcat(str, "1234567890", sizeof(str)) != 12)
97 Panic("strlcat return code");
99 Panic("strlcat NULL byte");
100 if (strlen(str) != 4)
101 Panic("strlcat string length");
109 ptr = strdup("12,abc");
111 ptr = strtok_r(ptr, ",", &last);
113 Panic("strtok_r result #1");
114 if (strcmp(ptr, "12") != 0)
115 Panic("strtok_r token #1");
117 ptr = strtok_r(NULL, ",", &last);
119 Panic("strtok_r result #2");
120 if (strcmp(ptr, "abc") != 0)
121 Panic("strtok_r token #2");
123 ptr = strtok_r(NULL, ",", &last);
125 Panic("strtok_r result #3");
130 Check_vsnprintf(const int Len, const char *Format, ...)
133 Check_vsnprintf(Len, Format, va_alist)
144 va_start(ap, Format);
148 r = vsnprintf(str, sizeof(str), Format, ap);
151 /* C99 states that vsnprintf() "returns the number of
152 * characters that would have been printed if the n were
153 * unlimited", but according to the Linux manual page "glibc
154 * until 2.0.6 would return -1 when the output was truncated",
155 * and other implementations (libUTIL on A/UX) even return the
156 * number of characters processed ... so we only test our own
157 * implementation and warn on errors otherwise :-/ */
158 #ifdef HAVE_VSNPRINTF
160 "\n ** WARNING: The vsnprintf() function of this system isn't standard\n");
162 " ** conformant and returns a WRONG result: %d (should be %d)! The test\n",
165 " ** result has been ignored but may lead to errors during execution!\n\n");
167 Panic("vsnprintf return code");
171 Panic("vsnprintf NULL byte");
172 if (strlen(str) != 4)
173 Panic("vsnprintf string length");
179 /* validate datatypes */
184 if (sizeof(UINT8) != 1)
186 if (sizeof(UINT16) != 2)
188 if (sizeof(UINT32) != 4)
191 /* check functions */
198 Check_vsnprintf(2+10, "%s%s", "ab", "1234567890");