1da1a022670074686a0cae9363582d51547cbd42eTheodore Ts'o/* 2da1a022670074686a0cae9363582d51547cbd42eTheodore Ts'o * hold_inode.c --- test program which holds an inode or directory 3da1a022670074686a0cae9363582d51547cbd42eTheodore Ts'o * open. 4da1a022670074686a0cae9363582d51547cbd42eTheodore Ts'o * 5da1a022670074686a0cae9363582d51547cbd42eTheodore Ts'o * Copyright (C) 2000 Theodore Ts'o. 6da1a022670074686a0cae9363582d51547cbd42eTheodore Ts'o * 7da1a022670074686a0cae9363582d51547cbd42eTheodore Ts'o * %Begin-Header% 8da1a022670074686a0cae9363582d51547cbd42eTheodore Ts'o * This file may be redistributed under the terms of the GNU Public 9da1a022670074686a0cae9363582d51547cbd42eTheodore Ts'o * License. 10da1a022670074686a0cae9363582d51547cbd42eTheodore Ts'o * %End-Header% 11da1a022670074686a0cae9363582d51547cbd42eTheodore Ts'o */ 12da1a022670074686a0cae9363582d51547cbd42eTheodore Ts'o 13da1a022670074686a0cae9363582d51547cbd42eTheodore Ts'o#include <unistd.h> 14da1a022670074686a0cae9363582d51547cbd42eTheodore Ts'o#include <stdio.h> 15da1a022670074686a0cae9363582d51547cbd42eTheodore Ts'o#include <dirent.h> 16da1a022670074686a0cae9363582d51547cbd42eTheodore Ts'o#include <sys/types.h> 17da1a022670074686a0cae9363582d51547cbd42eTheodore Ts'o#include <sys/stat.h> 18da1a022670074686a0cae9363582d51547cbd42eTheodore Ts'o#include <fcntl.h> 19da1a022670074686a0cae9363582d51547cbd42eTheodore Ts'o 20da1a022670074686a0cae9363582d51547cbd42eTheodore Ts'o 21da1a022670074686a0cae9363582d51547cbd42eTheodore Ts'omain(int argc, char **argv) 22da1a022670074686a0cae9363582d51547cbd42eTheodore Ts'o{ 23da1a022670074686a0cae9363582d51547cbd42eTheodore Ts'o struct stat statbuf; 24da1a022670074686a0cae9363582d51547cbd42eTheodore Ts'o char *filename; 25da1a022670074686a0cae9363582d51547cbd42eTheodore Ts'o 26da1a022670074686a0cae9363582d51547cbd42eTheodore Ts'o if (argc != 2) { 27da1a022670074686a0cae9363582d51547cbd42eTheodore Ts'o fprintf(stderr, "Usage: %s dir\n", argv[0]); 28da1a022670074686a0cae9363582d51547cbd42eTheodore Ts'o exit(1); 29da1a022670074686a0cae9363582d51547cbd42eTheodore Ts'o } 30da1a022670074686a0cae9363582d51547cbd42eTheodore Ts'o filename = argv[1]; 31da1a022670074686a0cae9363582d51547cbd42eTheodore Ts'o if (stat(filename, &statbuf) < 0) { 32da1a022670074686a0cae9363582d51547cbd42eTheodore Ts'o perror(filename); 33da1a022670074686a0cae9363582d51547cbd42eTheodore Ts'o exit(1); 34da1a022670074686a0cae9363582d51547cbd42eTheodore Ts'o } 35da1a022670074686a0cae9363582d51547cbd42eTheodore Ts'o if (S_ISDIR(statbuf.st_mode)) { 36da1a022670074686a0cae9363582d51547cbd42eTheodore Ts'o if (!opendir(filename)) { 37da1a022670074686a0cae9363582d51547cbd42eTheodore Ts'o perror(filename); 38da1a022670074686a0cae9363582d51547cbd42eTheodore Ts'o exit(1); 39da1a022670074686a0cae9363582d51547cbd42eTheodore Ts'o } 40da1a022670074686a0cae9363582d51547cbd42eTheodore Ts'o } else { 41da1a022670074686a0cae9363582d51547cbd42eTheodore Ts'o if (open(filename, O_RDONLY) < 0) { 42da1a022670074686a0cae9363582d51547cbd42eTheodore Ts'o perror(filename); 43da1a022670074686a0cae9363582d51547cbd42eTheodore Ts'o exit(1); 44da1a022670074686a0cae9363582d51547cbd42eTheodore Ts'o } 45da1a022670074686a0cae9363582d51547cbd42eTheodore Ts'o } 46da1a022670074686a0cae9363582d51547cbd42eTheodore Ts'o sleep(30); 47da1a022670074686a0cae9363582d51547cbd42eTheodore Ts'o} 48