aboutsummaryrefslogtreecommitdiffstats
path: root/lib/python2.7/site-packages/Twisted-12.2.0-py2.7-linux-x86_64.egg/twisted/python/_inotify.py
diff options
context:
space:
mode:
Diffstat (limited to 'lib/python2.7/site-packages/Twisted-12.2.0-py2.7-linux-x86_64.egg/twisted/python/_inotify.py')
-rwxr-xr-xlib/python2.7/site-packages/Twisted-12.2.0-py2.7-linux-x86_64.egg/twisted/python/_inotify.py101
1 files changed, 0 insertions, 101 deletions
diff --git a/lib/python2.7/site-packages/Twisted-12.2.0-py2.7-linux-x86_64.egg/twisted/python/_inotify.py b/lib/python2.7/site-packages/Twisted-12.2.0-py2.7-linux-x86_64.egg/twisted/python/_inotify.py
deleted file mode 100755
index b4692baa..00000000
--- a/lib/python2.7/site-packages/Twisted-12.2.0-py2.7-linux-x86_64.egg/twisted/python/_inotify.py
+++ /dev/null
@@ -1,101 +0,0 @@
-# -*- test-case-name: twisted.internet.test.test_inotify -*-
-# Copyright (c) Twisted Matrix Laboratories.
-# See LICENSE for details.
-
-"""
-Very low-level ctypes-based interface to Linux inotify(7).
-
-ctypes and a version of libc which supports inotify system calls are
-required.
-"""
-
-import ctypes
-import ctypes.util
-
-
-
-class INotifyError(Exception):
- """
- Unify all the possible exceptions that can be raised by the INotify API.
- """
-
-
-
-def init():
- """
- Create an inotify instance and return the associated file descriptor.
- """
- fd = libc.inotify_init()
- if fd < 0:
- raise INotifyError("INotify initialization error.")
- return fd
-
-
-
-def add(fd, path, mask):
- """
- Add a watch for the given path to the inotify file descriptor, and return
- the watch descriptor.
- """
- wd = libc.inotify_add_watch(fd, path, mask)
- if wd < 0:
- raise INotifyError("Failed to add watch on '%r' - (%r)" % (path, wd))
- return wd
-
-
-
-def remove(fd, wd):
- """
- Remove the given watch descriptor from the inotify file descriptor.
- """
- # When inotify_rm_watch returns -1 there's an error:
- # The errno for this call can be either one of the following:
- # EBADF: fd is not a valid file descriptor.
- # EINVAL: The watch descriptor wd is not valid; or fd is
- # not an inotify file descriptor.
- #
- # if we can't access the errno here we cannot even raise
- # an exception and we need to ignore the problem, one of
- # the most common cases is when you remove a directory from
- # the filesystem and that directory is observed. When inotify
- # tries to call inotify_rm_watch with a non existing directory
- # either of the 2 errors might come up because the files inside
- # it might have events generated way before they were handled.
- # Unfortunately only ctypes in Python 2.6 supports accessing errno:
- # http://bugs.python.org/issue1798 and in order to solve
- # the problem for previous versions we need to introduce
- # code that is quite complex:
- # http://stackoverflow.com/questions/661017/access-to-errno-from-python
- #
- # See #4310 for future resolution of this issue.
- libc.inotify_rm_watch(fd, wd)
-
-
-
-def initializeModule(libc):
- """
- Intialize the module, checking if the expected APIs exist and setting the
- argtypes and restype for for C{inotify_init}, C{inotify_add_watch}, and
- C{inotify_rm_watch}.
- """
- for function in ("inotify_add_watch", "inotify_init", "inotify_rm_watch"):
- if getattr(libc, function, None) is None:
- raise ImportError("libc6 2.4 or higher needed")
- libc.inotify_init.argtypes = []
- libc.inotify_init.restype = ctypes.c_int
-
- libc.inotify_rm_watch.argtypes = [
- ctypes.c_int, ctypes.c_int]
- libc.inotify_rm_watch.restype = ctypes.c_int
-
- libc.inotify_add_watch.argtypes = [
- ctypes.c_int, ctypes.c_char_p, ctypes.c_uint32]
- libc.inotify_add_watch.restype = ctypes.c_int
-
-
-
-name = ctypes.util.find_library('c')
-if not name:
- raise ImportError("Can't find C library.")
-libc = ctypes.cdll.LoadLibrary(name)
-initializeModule(libc)