blob: 52641e711c26dc776696ac3e8e2035db5605e3c6 [file] [log] [blame]
#include <stdio.h>
#include <stdlib.h>
#include <errno.h>
#include <string.h>
#include <io.h>
#define A(x) x
#define W(x) L##x
#define DEFINE_TEST(T, F, NAME, FINDDATA, FINDFIRST, FINDNEXT) \
static int NAME(void) \
{ \
fflush (stdout); \
fflush (stderr); \
printf ("\nTest name: %s\n", #NAME); \
struct FINDDATA d; \
intptr_t handle = FINDFIRST (T("*"), &d); \
if (handle == -1) { \
fprintf (stderr, "Error: Function %s failed: errno=%d (%s)\n", #FINDFIRST, errno, strerror (errno)); \
return 1; \
} \
printf (F "\n", d.name); \
while (FINDNEXT (handle, &d) == 0) { \
printf (F "\n", d.name); \
} \
if (errno != ENOENT) { \
fprintf (stderr, "Error: Function %s failed: errno=%d (%s)\n", #FINDNEXT, errno, strerror (errno)); \
return 1; \
} \
_findclose (handle); \
fprintf (stderr, "Test %s passed\n", #NAME); \
return 0; \
}
DEFINE_TEST(A, "%s", test, _finddata_t, _findfirst, _findnext)
DEFINE_TEST(A, "%s", testi64, _finddatai64_t, _findfirsti64, _findnexti64)
DEFINE_TEST(A, "%s", test32, _finddata32_t, _findfirst32, _findnext32)
DEFINE_TEST(A, "%s", test32i64, _finddata32i64_t, _findfirst32i64, _findnext32i64)
DEFINE_TEST(A, "%s", test64i32, _finddata64i32_t, _findfirst64i32, _findnext64i32)
DEFINE_TEST(A, "%s", test64, __finddata64_t, _findfirst64, _findnext64)
DEFINE_TEST(W, "%ls", wtest, _wfinddata_t, _wfindfirst, _wfindnext)
DEFINE_TEST(W, "%ls", wtesti64, _wfinddatai64_t, _wfindfirsti64, _wfindnexti64)
DEFINE_TEST(W, "%ls", wtest32, _wfinddata32_t, _wfindfirst32, _wfindnext32)
DEFINE_TEST(W, "%ls", wtest32i64, _wfinddata32i64_t, _wfindfirst32i64, _wfindnext32i64)
DEFINE_TEST(W, "%ls", wtest64i32, _wfinddata64i32_t, _wfindfirst64i32, _wfindnext64i32)
DEFINE_TEST(W, "%ls", wtest64, _wfinddata64_t, _wfindfirst64, _wfindnext64)
int main(int argc, char **argv)
{
int ret = 0;
ret |= test ();
ret |= testi64 ();
ret |= test32 ();
ret |= test32i64 ();
ret |= test64i32 ();
ret |= test64 ();
ret |= wtest ();
ret |= wtesti64 ();
ret |= wtest32 ();
ret |= wtest32i64 ();
ret |= wtest64i32 ();
ret |= wtest64 ();
return ret;
}