#include <stdio.h>
#include <fcntl.h>
#include <unistd.h>
#include <sys/stat.h>
int main(int argc, char **argv){
	struct stat st;
	int fd = open(argv[1], O_RDONLY);
	if (fd < 0) { perror("open"); return 1; }
	if (fstat(fd, &st) == 0)
		printf("before unlink: nlink=%llu size=%lld\n",
		       (unsigned long long)st.st_nlink,
		       (long long)st.st_size);
	if (unlink(argv[1]) < 0) perror("unlink");
	if (fstat(fd, &st) == 0)
		printf("after  unlink: nlink=%llu  <-- crafted nlinks=0 wrapped\n",
		       (unsigned long long)st.st_nlink);
	sleep(3); /* let flusher run while we hold the fd */
	if (fstat(fd, &st) == 0)
		printf("after  3s flush pause: nlink=%llu\n",
		       (unsigned long long)st.st_nlink);
	close(fd);
	return 0;
}
