| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465 | /* 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 intdo_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"
 |