#include <glib.h>
#include <stdlib.h>

#define MIN_NUMBER_OF_RUNS 1
#define EXIT_TEST_SKIP 77

extern int LLVMFuzzerTestOneInput(const unsigned char *data, size_t size);

int main(int argc, char **argv)
{
    int i, j;

    for (i = 1; i < argc; i++) {
        GError *err = NULL;
        char *name = argv[i];
        char *buf;
        size_t size;

        if (!g_file_get_contents(name, &buf, &size, &err)) {
            g_warning("Failed to read '%s': %s", name, err->message);
            g_clear_error(&err);
            return EXIT_FAILURE;
        }

        g_print("%s...\n", name);
        for (j = 0; j < MIN_NUMBER_OF_RUNS; j++) {
            if (LLVMFuzzerTestOneInput((void *)buf, size) == EXIT_TEST_SKIP) {
                g_free(buf);
                return EXIT_TEST_SKIP;
            }
        }
        g_free(buf);
    }

    return EXIT_SUCCESS;
}
