From e00a6af8174e4a75391a72a2bdd5090b7df436fb Mon Sep 17 00:00:00 2001 From: Adrian Bunk Date: Sun, 21 Sep 2008 19:44:16 +0300 Subject: use sys/inotify.h Some time ago glibc did not yet have inotify support, which forced several applications (including inotail) to ship their own copy of the required headers. Especially considering that this also requires updating the syscall numbers each time a new architecture wants to get supported it's the best to instead switch to #include now. --- README | 4 --- inotail.c | 3 +- inotify-syscalls.h | 102 ----------------------------------------------------- inotify.h | 69 ------------------------------------ 4 files changed, 1 insertion(+), 177 deletions(-) delete mode 100644 inotify-syscalls.h delete mode 100644 inotify.h diff --git a/README b/README index 577584e..a4a200a 100644 --- a/README +++ b/README @@ -39,8 +39,4 @@ inotail is licensed under the terms of the GNU General Public License version 2 or later. You can find the full text in the file LICENSE in the source tree of inotail. -The files inotify.h and inotify-syscalls.h were taken from the source tree of -the Linux kernel and slightly altered. Both are licensed under the terms of the -GNU General Public License version 2. - -- Tobias Klauser diff --git a/inotail.c b/inotail.c index fcf9185..8bda14a 100644 --- a/inotail.c +++ b/inotail.c @@ -33,8 +33,7 @@ #include #include -#include "inotify.h" -#include "inotify-syscalls.h" +#include #include "inotail.h" diff --git a/inotify-syscalls.h b/inotify-syscalls.h deleted file mode 100644 index 69144cb..0000000 --- a/inotify-syscalls.h +++ /dev/null @@ -1,102 +0,0 @@ -/* - * Inotify syscall numbers - * Taken from the Linux kernel source tree - * - * Licensed under the terms of the GNU General Public License Version 2. - * - * Copyright (c) 2006-2007 Tobias Klauser - */ - -#ifndef _LINUX_INOTIFY_SYSCALLS_H -#define _LINUX_INOTIFY_SYSCALLS_H - -#include -/* glibc already defines them for some architectures */ -#ifndef __NR_inotify_init -#if defined(__i386__) -# define __NR_inotify_init 291 -# define __NR_inotify_add_watch 292 -# define __NR_inotify_rm_watch 293 -#elif defined(__x86_64__) -# define __NR_inotify_init 253 -# define __NR_inotify_add_watch 254 -# define __NR_inotify_rm_watch 255 -#elif defined(__powerpc__) || defined(__powerpc64__) -# define __NR_inotify_init 275 -# define __NR_inotify_add_watch 276 -# define __NR_inotify_rm_watch 277 -#elif defined (__ia64__) -# define __NR_inotify_init 1277 -# define __NR_inotify_add_watch 1278 -# define __NR_inotify_rm_watch 1279 -#elif defined (__s390__) -# define __NR_inotify_init 284 -# define __NR_inotify_add_watch 285 -# define __NR_inotify_rm_watch 286 -#elif defined (__alpha__) -# define __NR_inotify_init 444 -# define __NR_inotify_add_watch 445 -# define __NR_inotify_rm_watch 446 -#elif defined (__sparc__) || defined (__sparc64__) -# define __NR_inotify_init 151 -# define __NR_inotify_add_watch 152 -# define __NR_inotify_rm_watch 156 -#elif defined (__arm__) -# define __NR_inotify_init (__NR_SYSCALL_BASE + 316) -# define __NR_inotify_add_watch (__NR_SYSCALL_BASE + 317) -# define __NR_inotify_rm_watch (__NR_SYSCALL_BASE + 318) -#elif defined (__sh__) -# define __NR_inotify_init 290 -# define __NR_inotify_add_watch 291 -# define __NR_inotify_rm_watch 292 -#elif defined (__m32r__) -# define __NR_inotify_init 290 -# define __NR_inotify_add_watch 291 -# define __NR_inotify_rm_watch 292 -#elif defined (__hppa__) -# define __NR_inotify_init 269 -# define __NR_inotify_add_watch 270 -# define __NR_inotify_rm_watch 271 -#elif defined (__mips__) -# include -# if _MIPS_SIM == _MIPS_SIM_ABI32 -# define __NR_Linux 4000 -# define __NR_inotify_init (__NR_Linux + 284) -# define __NR_inotify_add_watch (__NR_Linux + 285) -# define __NR_inotify_rm_watch (__NR_Linux + 286) -# elif _MIPS_SIM == _MIPS_SIM_ABI64 -# define __NR_Linux 5000 -# define __NR_inotify_init (__NR_Linux + 243) -# define __NR_inotify_add_watch (__NR_Linux + 244) -# define __NR_inotify_rm_watch (__NR_Linux + 245) -# elif _MIPS_SIM == _MIPS_SIM_NABI32 -# define __NR_Linux 6000 -# define __NR_inotify_init (__NR_Linux + 247) -# define __NR_inotify_add_watch (__NR_Linux + 248) -# define __NR_inotify_rm_watch (__NR_Linux + 249) -# endif -#elif defined (__m68k__) -# define __NR_inotify_init 284 -# define __NR_inotify_add_watch 285 -# define __NR_inotify_rm_watch 286 -#else -# error "inotify not supported on this architecture!" -#endif -#endif /* __NR_inotify_init */ - -static inline int inotify_init(void) -{ - return syscall(__NR_inotify_init); -} - -static inline int inotify_add_watch(int fd, const char *name, __u32 mask) -{ - return syscall(__NR_inotify_add_watch, fd, name, mask); -} - -static inline int inotify_rm_watch(int fd, __u32 wd) -{ - return syscall(__NR_inotify_rm_watch, fd, wd); -} - -#endif /* _LINUX_INOTIFY_SYSCALLS_H */ diff --git a/inotify.h b/inotify.h deleted file mode 100644 index cd8062a..0000000 --- a/inotify.h +++ /dev/null @@ -1,69 +0,0 @@ -/* - * Inode based directory notification for Linux - * Taken from the Linux kernel source tree - * - * Licensed under the terms of the GNU General Public License Version 2. - * - * Copyright (C) 2005 John McCutchan - */ - -#ifndef _LINUX_INOTIFY_H -#define _LINUX_INOTIFY_H - -#include - -/* - * struct inotify_event - structure read from the inotify device for each event - * - * When you are watching a directory, you will receive the filename for events - * such as IN_CREATE, IN_DELETE, IN_OPEN, IN_CLOSE, ..., relative to the wd. - */ -struct inotify_event { - __s32 wd; /* watch descriptor */ - __u32 mask; /* watch mask */ - __u32 cookie; /* cookie to synchronize two events */ - __u32 len; /* length (including nulls) of name */ - char name[0]; /* stub for possible name */ -}; - -/* the following are legal, implemented events that user-space can watch for */ -#define IN_ACCESS 0x00000001 /* File was accessed */ -#define IN_MODIFY 0x00000002 /* File was modified */ -#define IN_ATTRIB 0x00000004 /* Metadata changed */ -#define IN_CLOSE_WRITE 0x00000008 /* Writtable file was closed */ -#define IN_CLOSE_NOWRITE 0x00000010 /* Unwrittable file closed */ -#define IN_OPEN 0x00000020 /* File was opened */ -#define IN_MOVED_FROM 0x00000040 /* File was moved from X */ -#define IN_MOVED_TO 0x00000080 /* File was moved to Y */ -#define IN_CREATE 0x00000100 /* Subfile was created */ -#define IN_DELETE 0x00000200 /* Subfile was deleted */ -#define IN_DELETE_SELF 0x00000400 /* Self was deleted */ -#define IN_MOVE_SELF 0x00000800 /* Self was moved */ - -/* the following are legal events. they are sent as needed to any watch */ -#define IN_UNMOUNT 0x00002000 /* Backing fs was unmounted */ -#define IN_Q_OVERFLOW 0x00004000 /* Event queued overflowed */ -#define IN_IGNORED 0x00008000 /* File was ignored */ - -/* helper events */ -#define IN_CLOSE (IN_CLOSE_WRITE | IN_CLOSE_NOWRITE) /* close */ -#define IN_MOVE (IN_MOVED_FROM | IN_MOVED_TO) /* moves */ - -/* special flags */ -#define IN_ONLYDIR 0x01000000 /* only watch the path if it is a directory */ -#define IN_DONT_FOLLOW 0x02000000 /* don't follow a sym link */ -#define IN_MASK_ADD 0x20000000 /* add to the mask of an already existing watch */ -#define IN_ISDIR 0x40000000 /* event occurred against dir */ -#define IN_ONESHOT 0x80000000 /* only send event once */ - -/* - * All of the events - we build the list by hand so that we can add flags in - * the future and not break backward compatibility. Apps will get only the - * events that they originally wanted. Be sure to add new events here! - */ -#define IN_ALL_EVENTS (IN_ACCESS | IN_MODIFY | IN_ATTRIB | IN_CLOSE_WRITE | \ - IN_CLOSE_NOWRITE | IN_OPEN | IN_MOVED_FROM | \ - IN_MOVED_TO | IN_DELETE | IN_CREATE | IN_DELETE_SELF | \ - IN_MOVE_SELF) - -#endif /* _LINUX_INOTIFY_H */ -- cgit v1.2.3-54-g00ecf From 5a3a08a2a200f3a5ef44fab59a54445d97a8f6d9 Mon Sep 17 00:00:00 2001 From: Tobias Klauser Date: Tue, 23 Sep 2008 09:48:21 +0200 Subject: Update changelog --- changelog | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/changelog b/changelog index 83696c2..3f0d9f7 100644 --- a/changelog +++ b/changelog @@ -3,9 +3,11 @@ inotail 0.6 * Correctly handle tailing from pipes * Do not try to seek on pipes when following (thanks Alexander Sulfrian) * Handle file truncation in follow mode + * Use sys/inotify.h instead of private copy of the inotify header (patch by + Adrian Bunk) * Various small fixes - -- Tobias Klauser 2008-08-31 21:15 + -- Tobias Klauser 2008-09-23 09:46 inotail 0.5 -- cgit v1.2.3-54-g00ecf From c31ed682546de11f6e6824647c9321e74cf8692b Mon Sep 17 00:00:00 2001 From: Tobias Klauser Date: Sun, 18 Jan 2009 23:13:44 +0100 Subject: inotail.h: Use sys/inotify.h --- inotail.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/inotail.h b/inotail.h index 4c1ca4d..93011e6 100644 --- a/inotail.h +++ b/inotail.h @@ -8,7 +8,7 @@ #define _INOTAIL_H #include -#include "inotify.h" +#include #define DEFAULT_N_LINES 10 /* Number of items to tail. */ -- cgit v1.2.3-54-g00ecf From f6ae74eb0e94facb9fea8002ea86b5af1f6e593e Mon Sep 17 00:00:00 2001 From: Tobias Klauser Date: Sun, 18 Jan 2009 23:13:58 +0100 Subject: Makefile: Add -Wextra to CFLAGS --- Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Makefile b/Makefile index 5e96f38..2339ca2 100644 --- a/Makefile +++ b/Makefile @@ -13,7 +13,7 @@ MANDIR = $(prefix)/share/man/man1 CC := gcc CFLAGS := $(CFLAGS) -pipe -D_USE_SOURCE -DVERSION="\"$(VERSION)\"" -W -Wall \ - -Wstrict-prototypes -Wsign-compare -Wshadow -Wchar-subscripts \ + -Wextra -Wstrict-prototypes -Wsign-compare -Wshadow -Wchar-subscripts \ -Wmissing-declarations -Wpointer-arith -Wcast-align -Wmissing-prototypes # Compile with 'make DEBUG=true' to enable debugging -- cgit v1.2.3-54-g00ecf