]> git.pld-linux.org Git - packages/glibc.git/commitdiff
- add inotify support, syscalls inlined if <sys/inotify.h> included
authorElan Ruusamäe <glen@pld-linux.org>
Wed, 12 Oct 2011 08:02:43 +0000 (08:02 +0000)
committercvs2git <feedback@pld-linux.org>
Sun, 24 Jun 2012 12:13:13 +0000 (12:13 +0000)
Changed files:
    glibc.spec -> 1.583.2.103
    inotify.h -> 1.1.2.1

glibc.spec
inotify.h [new file with mode: 0644]

index 28f8757d2a5cf396cedfed3324ff6be9c11f4215..ca45922d6f0d23b7bab51aa979a9e6567fa616c6 100644 (file)
@@ -86,7 +86,7 @@ Summary(tr.UTF-8):    GNU libc
 Summary(uk.UTF-8):     GNU libc версії 2.3
 Name:          glibc
 Version:       2.3.6
-Release:       18
+Release:       19
 Epoch:         6
 License:       LGPL
 Group:         Libraries
@@ -102,6 +102,7 @@ Source5:    http://qboosh.cs.net.pl/man/%{name}-man-pages.tar.bz2
 # Source5-md5: f464eadf3cf06761f65639e44a179e6b
 Source6:       %{name}-localedb-gen
 Source7:       %{name}-LD-path.c
+Source8:       inotify.h
 Patch0:                %{name}-info.patch
 Patch1:                %{name}-pl.po-update.patch
 Patch2:                %{name}-pld.patch
@@ -1110,16 +1111,16 @@ PICFILES="libc_pic.a libc.map
        math/libm_pic.a libm.map
        resolv/libresolv_pic.a"
 
-install $PICFILES                              $RPM_BUILD_ROOT%{_libdir}
-install elf/soinit.os                          $RPM_BUILD_ROOT%{_libdir}/soinit.o
-install elf/sofini.os                          $RPM_BUILD_ROOT%{_libdir}/sofini.o
+cp -p $PICFILES                                $RPM_BUILD_ROOT%{_libdir}
+cp -p elf/soinit.os                            $RPM_BUILD_ROOT%{_libdir}/soinit.o
+cp -p elf/sofini.os                            $RPM_BUILD_ROOT%{_libdir}/sofini.o
 cd ..
 
 %if %{without cross}
 %ifarch %{x8664} ppc64 s390x sparc64
-install glibc-postinst                         $RPM_BUILD_ROOT/sbin/glibc-postinst64
+install -p glibc-postinst                              $RPM_BUILD_ROOT/sbin/glibc-postinst64
 %else
-install glibc-postinst                         $RPM_BUILD_ROOT/sbin/glibc-postinst
+install -p glibc-postinst                              $RPM_BUILD_ROOT/sbin/glibc-postinst
 %endif
 %endif
 
@@ -1135,7 +1136,7 @@ for f in libc libm libpthread libthread_db librt; do
 done
 $RPM_BUILD_ROOT/sbin/ldconfig -n $RPM_BUILD_ROOT/%{_lib}/tls
 
-for f in libc.so libpthread.so ; do
+for f in libc.so libpthread.so; do
        cat $RPM_BUILD_ROOT/nptl%{_libdir}/$f | sed \
                -e "s|/libc.so.6|/tls/libc.so.6|g" \
                -e "s|/libpthread.so.0|/tls/libpthread.so.0|g" \
@@ -1161,7 +1162,7 @@ rm -rf $RPM_BUILD_ROOT/nptl
 mv -f $RPM_BUILD_ROOT/%{_lib}/libpcprofile.so  $RPM_BUILD_ROOT%{_libdir}
 
 %if %{with linuxthreads}
-install linuxthreads/man/*.3thr                $RPM_BUILD_ROOT%{_mandir}/man3
+cp -p linuxthreads/man/*.3thr          $RPM_BUILD_ROOT%{_mandir}/man3
 %endif
 
 rm -f $RPM_BUILD_ROOT%{_sysconfdir}/localtime
@@ -1193,6 +1194,8 @@ cat <<EOF >$RPM_BUILD_ROOT%{_includedir}/gnu/stubs.h
 EOF
 %endif
 
+cp -p %{SOURCE8} $RPM_BUILD_ROOT%{_includedir}/sys/inotify.h
+
 ln -sf libbsd-compat.a         $RPM_BUILD_ROOT%{_libdir}/libbsd.a
 
 # make symlinks across top-level directories absolute
@@ -1201,11 +1204,11 @@ for l in anl BrokenLocale crypt dl m nsl resolv rt thread_db util ; do
        ln -sf /%{_lib}/`cd $RPM_BUILD_ROOT/%{_lib} ; echo lib${l}.so.*` $RPM_BUILD_ROOT%{_libdir}/lib${l}.so
 done
 
-install %{SOURCE2}             $RPM_BUILD_ROOT/etc/rc.d/init.d/nscd
-install %{SOURCE3}             $RPM_BUILD_ROOT/etc/sysconfig/nscd
-install %{SOURCE4}             $RPM_BUILD_ROOT/etc/logrotate.d/nscd
-install nscd/nscd.conf $RPM_BUILD_ROOT%{_sysconfdir}
-install nss/nsswitch.conf      $RPM_BUILD_ROOT%{_sysconfdir}
+install -p %{SOURCE2}          $RPM_BUILD_ROOT/etc/rc.d/init.d/nscd
+cp -p %{SOURCE3}               $RPM_BUILD_ROOT/etc/sysconfig/nscd
+cp -p %{SOURCE4}               $RPM_BUILD_ROOT/etc/logrotate.d/nscd
+cp -p nscd/nscd.conf   $RPM_BUILD_ROOT%{_sysconfdir}
+cp -p nss/nsswitch.conf        $RPM_BUILD_ROOT%{_sysconfdir}
 
 bzip2 -dc %{SOURCE5} | tar xf - -C $RPM_BUILD_ROOT%{_mandir}
 > $RPM_BUILD_ROOT%{_sysconfdir}/ld.so.cache
@@ -1223,17 +1226,17 @@ install -d documentation
 
 %if %{with linuxthreads}
 for f in ChangeLog Changes README ; do
-       cp -f linuxthreads/$f documentation/${f}.linuxthreads
+       cp -pf linuxthreads/$f documentation/${f}.linuxthreads
 done
 %endif
 %if %{with nptl}
 for f in ANNOUNCE ChangeLog DESIGN-{barrier,condvar,rwlock,sem}.txt TODO{,-kernel,-testing} ;  do
-       cp -f nptl/$f documentation/${f}.nptl
+       cp -pf nptl/$f documentation/${f}.nptl
 done
 %endif
-cp -f crypt/README.ufc-crypt documentation
+cp -pf crypt/README.ufc-crypt documentation
 
-cp -f ChangeLog* documentation
+cp -pf ChangeLog* documentation
 
 rm -f $RPM_BUILD_ROOT%{_libdir}/libnss_*.so
 
@@ -1296,7 +1299,7 @@ done
 # localedb-gen infrastructure
 sed -e 's,@localedir@,%{_libdir}/locale,' %{SOURCE6} > $RPM_BUILD_ROOT%{_bindir}/localedb-gen
 chmod +x $RPM_BUILD_ROOT%{_bindir}/localedb-gen
-install localedata/SUPPORTED $RPM_BUILD_ROOT%{_datadir}/i18n
+cp -p localedata/SUPPORTED $RPM_BUILD_ROOT%{_datadir}/i18n
 
 # shutup check-files
 rm -f $RPM_BUILD_ROOT%{_mandir}/README.*
diff --git a/inotify.h b/inotify.h
new file mode 100644 (file)
index 0000000..5f7b11b
--- /dev/null
+++ b/inotify.h
@@ -0,0 +1,167 @@
+/*
+ * This header is used if <sys/inotify.h> cannot be found.
+ *
+ * Inode based directory notification for Linux
+ *
+ * Copyright (C) 2005 John McCutchan
+ */
+
+#ifndef _LINUX_INOTIFY_H
+#define _LINUX_INOTIFY_H
+
+#include <stdint.h>
+#include <sys/syscall.h>
+#include <unistd.h>
+
+/*
+ * 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 {
+       int             wd;             /* watch descriptor */
+       uint32_t                mask;           /* watch mask */
+       uint32_t                cookie;         /* cookie to synchronize two events */
+       uint32_t                len;            /* length (including nulls) of name */
+       char            name __flexarr; /* 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)
+
+#if defined (__alpha__)
+# define __NR_inotify_init 444
+# define __NR_inotify_add_watch 445
+# define __NR_inotify_rm_watch 446
+
+#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 (__frv__)
+# define __NR_inotify_init 291
+# define __NR_inotify_add_watch 292
+# define __NR_inotify_rm_watch 293
+
+#elif defined(__i386__)
+# define __NR_inotify_init 291
+# define __NR_inotify_add_watch 292
+# define __NR_inotify_rm_watch 293
+
+#elif defined (__ia64__)
+# define __NR_inotify_init 1277
+# define __NR_inotify_add_watch 1278
+# define __NR_inotify_rm_watch 1279
+
+#elif defined (__mips__)
+# if _MIPS_SIM == _MIPS_SIM_ABI32
+#  define __NR_inotify_init (__NR_Linux + 284)
+#  define __NR_inotify_add_watch (__NR_Linux + 285)
+#  define __NR_inotify_rm_watch (__NR_Linux + 286)
+# endif
+# if _MIPS_SIM == _MIPS_SIM_ABI64
+#  define __NR_inotify_init (__NR_Linux + 243)
+#  define __NR_inotify_add_watch (__NR_Linux + 243)
+#  define __NR_inotify_rm_watch (__NR_Linux + 243)
+# endif
+# if _MIPS_SIM == _MIPS_SIM_NABI32
+#  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(__parisc__)
+# define __NR_inotify_init (__NR_Linux + 269)
+# define __NR_inotify_add_watch (__NR_Linux + 270)
+# define __NR_inotify_rm_watch (__NR_Linux + 271)
+
+#elif defined(__powerpc__) || defined(__powerpc64__)
+# define __NR_inotify_init 275
+# define __NR_inotify_add_watch 276
+# define __NR_inotify_rm_watch 277
+
+#elif defined (__s390__)
+# define __NR_inotify_init 284
+# define __NR_inotify_add_watch 285
+# define __NR_inotify_rm_watch 286
+
+#elif defined (__sh__)
+# define __NR_inotify_init 290
+# define __NR_inotify_add_watch 291
+# define __NR_inotify_rm_watch 292
+
+#elif defined (__sh64__)
+# define __NR_inotify_init 318
+# define __NR_inotify_add_watch 319
+# define __NR_inotify_rm_watch 320
+
+#elif defined (__sparc__) || defined (__sparc64__)
+# define __NR_inotify_init 151
+# define __NR_inotify_add_watch 152
+# define __NR_inotify_rm_watch 156
+
+#elif defined(__x86_64__)
+# define __NR_inotify_init 253
+# define __NR_inotify_add_watch 254
+# define __NR_inotify_rm_watch 255
+
+#else
+# error "Unsupported architecture!"
+#endif
+
+static inline int inotify_init (void)
+{
+       return syscall (__NR_inotify_init);
+}
+
+static inline int inotify_add_watch (int fd, const char *name, uint32_t mask)
+{
+       return syscall (__NR_inotify_add_watch, fd, name, mask);
+}
+
+static inline int inotify_rm_watch (int fd, uint32_t wd)
+{
+       return syscall (__NR_inotify_rm_watch, fd, wd);
+}
+
+
+#endif /* _LINUX_INOTIFY_H */
This page took 0.528743 seconds and 4 git commands to generate.