/* vi: set sw=4 ts=4 sts=4: */ /* * inotify test for uClibc * Copyright (C) 2012 by Kevin Cernekee <cernekee@gmail.com> * * Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball. */ #include <stdio.h> #include <stdlib.h> #include <string.h> #include <unistd.h> #include <errno.h> #include <inttypes.h> #include <sys/inotify.h> #include <sys/fcntl.h> static int do_test(void) { int ifd, fd, ret, result = 0; struct inotify_event e; char tfile[] = "/tmp/inotify.XXXXXX"; fd = mkstemp(tfile); close(fd); ifd = inotify_init1(IN_NONBLOCK); if (ifd < 0) { perror("inotify_init1()"); result = 1; } if (inotify_add_watch(ifd, tfile, IN_DELETE_SELF) < 0) { perror("inotify_add_watch()"); result = 1; } /* nonblocking inotify should return immediately with no events */ ret = read(ifd, &e, sizeof(e)); if (ret != -1 || errno != EAGAIN) { fprintf(stderr, "first read() returned %d\n", ret); result = 1; } /* generate an event */ unlink(tfile); /* now check whether our event was seen */ ret = read(ifd, &e, sizeof(e)); if (ret != sizeof(e)) { fprintf(stderr, "second read() returned %d\n", ret); result = 1; } if (!(e.mask & IN_DELETE_SELF)) { fprintf(stderr, "incorrect event mask: %" PRIx32 "\n", e.mask); result = 1; } return result; } #define TIMEOUT 5 #define TEST_FUNCTION do_test () #include "../test-skeleton.c"