[Python-modules-commits] [python-llfuse] 01/11: Import python-llfuse_1.3.2+dfsg.orig.tar.gz
Nikolaus Rath
nikratio-guest at moszumanska.debian.org
Mon Nov 13 12:52:47 UTC 2017
This is an automated email from the git hooks/post-receive script.
nikratio-guest pushed a commit to branch master
in repository python-llfuse.
commit 1921f2f34497ebd923bf57c3c5db71af7ce70668
Author: Nikolaus Rath <Nikolaus at rath.org>
Date: Mon Nov 13 12:16:29 2017 +0000
Import python-llfuse_1.3.2+dfsg.orig.tar.gz
---
Changes.rst | 11 +
Include/posix/stat.pxd | 67 --
Include/pthread.pxd | 1 +
PKG-INFO | 128 +--
README.rst | 2 +-
examples/lltest.py | 8 +-
examples/passthroughfs.py | 8 +-
examples/tmpfs.py | 8 +-
setup.py | 24 +-
src/fuse_api.pxi | 44 +-
src/llfuse.c | 2197 ++++++++++++++++++++++----------------
src/llfuse.egg-info/PKG-INFO | 128 +--
src/llfuse.egg-info/SOURCES.txt | 3 +-
src/llfuse.egg-info/requires.txt | 1 +
src/misc.pxi | 16 +-
15 files changed, 1476 insertions(+), 1170 deletions(-)
diff --git a/Changes.rst b/Changes.rst
index ab2f765..af2ed8a 100644
--- a/Changes.rst
+++ b/Changes.rst
@@ -4,6 +4,17 @@
.. currentmodule:: llfuse
+Release 1.3.2 (2017-11-13)
+==========================
+
+* Minor bugfixes.
+
+Release 1.3.1 (2017-09-22)
+==========================
+
+* The main loop now terminates properly again when terminated
+ by a signal.
+
Release 1.3 (2017-09-15)
========================
diff --git a/Include/posix/stat.pxd b/Include/posix/stat.pxd
deleted file mode 100644
index 0d61be1..0000000
--- a/Include/posix/stat.pxd
+++ /dev/null
@@ -1,67 +0,0 @@
-from posix.types cimport (blkcnt_t, blksize_t, dev_t, gid_t, ino_t, mode_t,
- nlink_t, off_t, time_t, uid_t)
-
-
-cdef extern from "<sys/stat.h>" nogil:
- cdef struct struct_stat "stat":
- dev_t st_dev
- ino_t st_ino
- mode_t st_mode
- nlink_t st_nlink
- uid_t st_uid
- gid_t st_gid
- dev_t st_rdev
- off_t st_size
- blksize_t st_blksize
- blkcnt_t st_blocks
- time_t st_atime
- time_t st_mtime
- time_t st_ctime
- time_t st_birthtime
-
-# POSIX prescribes including both <sys/stat.h> and <unistd.h> for these
-cdef extern from "<unistd.h>" nogil:
- int fchmod(int, mode_t)
- int chmod(const char *, mode_t)
-
- int fstat(int, struct_stat *)
- int lstat(const char *, struct_stat *)
- int stat(const char *, struct_stat *)
-
- # Macros for st_mode
- mode_t S_ISREG(mode_t)
- mode_t S_ISDIR(mode_t)
- mode_t S_ISCHR(mode_t)
- mode_t S_ISBLK(mode_t)
- mode_t S_ISFIFO(mode_t)
- mode_t S_ISLNK(mode_t)
- mode_t S_ISSOCK(mode_t)
-
- mode_t S_IFMT
- mode_t S_IFREG
- mode_t S_IFDIR
- mode_t S_IFCHR
- mode_t S_IFBLK
- mode_t S_IFIFO
- mode_t S_IFLNK
- mode_t S_IFSOCK
-
- # Permissions
- mode_t S_ISUID
- mode_t S_ISGID
- mode_t S_ISVTX
-
- mode_t S_IRWXU
- mode_t S_IRUSR
- mode_t S_IWUSR
- mode_t S_IXUSR
-
- mode_t S_IRWXG
- mode_t S_IRGRP
- mode_t S_IWGRP
- mode_t S_IXGRP
-
- mode_t S_IRWXO
- mode_t S_IROTH
- mode_t S_IWOTH
- mode_t S_IXOTH
diff --git a/Include/pthread.pxd b/Include/pthread.pxd
index 1656192..fead231 100644
--- a/Include/pthread.pxd
+++ b/Include/pthread.pxd
@@ -35,6 +35,7 @@ cdef extern from "<pthread.h>" nogil:
int pthread_create(pthread_t *thread, pthread_attr_t *attr,
void *(*start_routine) (void *), void *arg)
int pthread_join(pthread_t thread, void **retval)
+ int pthread_kill(pthread_t thread, int sig)
int pthread_mutex_init(pthread_mutex_t *mutex, pthread_mutexattr_t *mutexattr)
int pthread_mutex_lock(pthread_mutex_t *mutex)
diff --git a/PKG-INFO b/PKG-INFO
index abc6a51..c9dec44 100644
--- a/PKG-INFO
+++ b/PKG-INFO
@@ -1,75 +1,75 @@
Metadata-Version: 1.1
Name: llfuse
-Version: 1.3
+Version: 1.3.2
Summary: Python bindings for the low-level FUSE API
Home-page: https://bitbucket.org/nikratio/python-llfuse/
Author: Nikolaus Rath
Author-email: Nikolaus at rath.org
License: LGPL
Download-URL: https://bitbucket.org/nikratio/python-llfuse/downloads
-Description: ..
- NOTE: We cannot use sophisticated ReST syntax (like
- e.g. :file:`foo`) here because this isn't rendered correctly
- by PyPi and/or BitBucket.
-
- The Python-LLFUSE Module
- ========================
-
- .. start-intro
-
- Python-LLFUSE is a set of Python bindings for the low level FUSE_
- API. It requires at least FUSE 2.8.0 and supports both Python 2.x and
- 3.x. Like FUSE itself, Python-LLFUSE is developed for Linux
- systems. However, we try to maintain compatibility with OS-X, FreeBSD
- and NetBSD as well (but due to lack of pre-release testers we can't
- guarantee that every Python-LLFUSE release will run on these
- platforms - please report any bugs and we will try to fix them).
-
- Python-LLFUSE releases can be downloaded from PyPi_. The documentation
- can be `read online`__ and is also included in the ``doc/html``
- directory of the Python-LLFUSE tarball.
-
-
- Getting Help
- ------------
-
- Please report any bugs on the `issue tracker`_. For discussion and
- questions, please use the general `FUSE mailing list`_. A searchable
- `mailing list archive`_ is kindly provided by Gmane_.
-
-
- Development Status
- ------------------
-
- The Python-LLFUSE API is not yet stable and may change from one
- release to the other. Starting with version 0.42, Python-LLFUSE uses
- semantic versioning. This means changes in the API will be reflected
- in an increase of the major version number, i.e. the next
- backwards-incompatible version will be 1.0. Projects designed for
- e.g. version 0.42.1 of Python-LLFUSE are thus recommended to declare a
- dependency on ``llfuse >= 0.42.1, < 1.0``.
-
-
- Professional Support
- --------------------
-
- Professional support is available. Please contact Nikolaus Rath
- <Nikolaus at rath.org> for details.
-
- Contributing
- ------------
-
- The Python-LLFUSE source code is available both on GitHub_ and BitBucket_.
-
- .. __: http://pythonhosted.org/llfuse/
- .. _FUSE: http://github.com/libfuse/libfuse
- .. _FUSE mailing list: https://lists.sourceforge.net/lists/listinfo/fuse-devel
- .. _issue tracker: https://bitbucket.org/nikratio/python-llfuse/issues
- .. _mailing list archive: http://dir.gmane.org/gmane.comp.file-systems.fuse.devel
- .. _Gmane: http://www.gmane.org/
- .. _PyPi: https://pypi.python.org/pypi/llfuse/
- .. _BitBucket: https://bitbucket.org/nikratio/python-llfuse/
- .. _GitHub: https://github.com/python-llfuse/python-llfuse
+Description: ..
+ NOTE: We cannot use sophisticated ReST syntax (like
+ e.g. :file:`foo`) here because this isn't rendered correctly
+ by PyPi and/or BitBucket.
+
+ The Python-LLFUSE Module
+ ========================
+
+ .. start-intro
+
+ Python-LLFUSE is a set of Python bindings for the low level FUSE_
+ API. It requires at least FUSE 2.8.0 and supports both Python 2.x and
+ 3.x. Like FUSE itself, Python-LLFUSE is developed for Linux
+ systems. However, we try to maintain compatibility with OS-X, FreeBSD
+ and NetBSD as well (but due to lack of pre-release testers we can't
+ guarantee that every Python-LLFUSE release will run on these
+ platforms - please report any bugs and we will try to fix them).
+
+ Python-LLFUSE releases can be downloaded from PyPi_. The documentation
+ can be `read online`__ and is also included in the ``doc/html``
+ directory of the Python-LLFUSE tarball.
+
+
+ Getting Help
+ ------------
+
+ Please report any bugs on the `issue tracker`_. For discussion and
+ questions, please use the general `FUSE mailing list`_. A searchable
+ `mailing list archive`_ is kindly provided by Gmane_.
+
+
+ Development Status
+ ------------------
+
+ The Python-LLFUSE API is not yet stable and may change from one
+ release to the other. Starting with version 0.42, Python-LLFUSE uses
+ semantic versioning. This means changes in the API will be reflected
+ in an increase of the major version number, i.e. the next
+ backwards-incompatible version will be 1.0. Projects designed for
+ e.g. version 0.42.1 of Python-LLFUSE are thus recommended to declare a
+ dependency on ``llfuse >= 0.42.1, < 1.0``.
+
+
+ Professional Support
+ --------------------
+
+ Professional support is available. Please contact Nikolaus Rath
+ <Nikolaus at rath.org> for details.
+
+ Contributing
+ ------------
+
+ The Python-LLFUSE source code is available both on GitHub_ and BitBucket_.
+
+ .. __: http://www.rath.org/llfuse-docs/
+ .. _FUSE: http://github.com/libfuse/libfuse
+ .. _FUSE mailing list: https://lists.sourceforge.net/lists/listinfo/fuse-devel
+ .. _issue tracker: https://bitbucket.org/nikratio/python-llfuse/issues
+ .. _mailing list archive: http://dir.gmane.org/gmane.comp.file-systems.fuse.devel
+ .. _Gmane: http://www.gmane.org/
+ .. _PyPi: https://pypi.python.org/pypi/llfuse/
+ .. _BitBucket: https://bitbucket.org/nikratio/python-llfuse/
+ .. _GitHub: https://github.com/python-llfuse/python-llfuse
Keywords: FUSE,python
Platform: Linux
diff --git a/README.rst b/README.rst
index a7a30b1..1aac425 100644
--- a/README.rst
+++ b/README.rst
@@ -52,7 +52,7 @@ Contributing
The Python-LLFUSE source code is available both on GitHub_ and BitBucket_.
-.. __: http://pythonhosted.org/llfuse/
+.. __: http://www.rath.org/llfuse-docs/
.. _FUSE: http://github.com/libfuse/libfuse
.. _FUSE mailing list: https://lists.sourceforge.net/lists/listinfo/fuse-devel
.. _issue tracker: https://bitbucket.org/nikratio/python-llfuse/issues
diff --git a/examples/lltest.py b/examples/lltest.py
index e359496..44bc53c 100755
--- a/examples/lltest.py
+++ b/examples/lltest.py
@@ -28,12 +28,12 @@ from __future__ import division, print_function, absolute_import
import os
import sys
-# We are running from the Python-LLFUSE source directory, put it
-# into the Python path.
+# If we are running from the Python-LLFUSE source directory, try
+# to load the module from there first.
basedir = os.path.abspath(os.path.join(os.path.dirname(sys.argv[0]), '..'))
if (os.path.exists(os.path.join(basedir, 'setup.py')) and
- os.path.exists(os.path.join(basedir, 'src', 'llfuse'))):
- sys.path.append(os.path.join(basedir, 'src'))
+ os.path.exists(os.path.join(basedir, 'src', 'llfuse.pyx'))):
+ sys.path.insert(0, os.path.join(basedir, 'src'))
from argparse import ArgumentParser
import stat
diff --git a/examples/passthroughfs.py b/examples/passthroughfs.py
index 774c177..ef45030 100755
--- a/examples/passthroughfs.py
+++ b/examples/passthroughfs.py
@@ -44,12 +44,12 @@ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
import os
import sys
-# We are running from the Python-LLFUSE source directory, put it
-# into the Python path.
+# If we are running from the Python-LLFUSE source directory, try
+# to load the module from there first.
basedir = os.path.abspath(os.path.join(os.path.dirname(sys.argv[0]), '..'))
if (os.path.exists(os.path.join(basedir, 'setup.py')) and
- os.path.exists(os.path.join(basedir, 'src', 'llfuse'))):
- sys.path.append(os.path.join(basedir, 'src'))
+ os.path.exists(os.path.join(basedir, 'src', 'llfuse.pyx'))):
+ sys.path.insert(0, os.path.join(basedir, 'src'))
import llfuse
from argparse import ArgumentParser
diff --git a/examples/tmpfs.py b/examples/tmpfs.py
index d3345a9..0ff052b 100755
--- a/examples/tmpfs.py
+++ b/examples/tmpfs.py
@@ -27,12 +27,12 @@ from __future__ import division, print_function, absolute_import
import os
import sys
-# We are running from the Python-LLFUSE source directory, put it
-# into the Python path.
+# If we are running from the Python-LLFUSE source directory, try
+# to load the module from there first.
basedir = os.path.abspath(os.path.join(os.path.dirname(sys.argv[0]), '..'))
if (os.path.exists(os.path.join(basedir, 'setup.py')) and
- os.path.exists(os.path.join(basedir, 'src', 'llfuse'))):
- sys.path.append(os.path.join(basedir, 'src'))
+ os.path.exists(os.path.join(basedir, 'src', 'llfuse.pyx'))):
+ sys.path.insert(0, os.path.join(basedir, 'src'))
import llfuse
import errno
diff --git a/setup.py b/setup.py
index b7f1ca3..194c37a 100755
--- a/setup.py
+++ b/setup.py
@@ -59,7 +59,7 @@ if DEVELOPER_MODE:
# to work properly
sys.path.insert(0, os.path.join(basedir, 'src'))
-LLFUSE_VERSION = '1.3'
+LLFUSE_VERSION = '1.3.2'
def main():
@@ -80,6 +80,10 @@ def main():
# We may have unused functions if we compile for older FUSE versions
compile_args.append('-Wno-unused-function')
+ # Nothing wrong with that if you know what you are doing
+ # (which Cython does)
+ compile_args.append('-Wno-implicit-fallthrough')
+
# Due to platform specific conditions, these are unavoidable
compile_args.append('-Wno-unused-parameter')
@@ -151,7 +155,8 @@ def main():
ext_modules=[Extension('llfuse', c_sources,
extra_compile_args=compile_args,
extra_link_args=link_args)],
- cmdclass={'build_cython': build_cython },
+ cmdclass={'upload_docs': upload_docs,
+ 'build_cython': build_cython },
command_options={
'build_sphinx': {
'version': ('setup.py', LLFUSE_VERSION),
@@ -192,6 +197,21 @@ def pkg_config(pkg, cflags=True, ldflags=False, min_ver=None):
return cflags.decode('us-ascii').split()
+class upload_docs(setuptools.Command):
+ user_options = []
+ boolean_options = []
+ description = "Upload documentation"
+
+ def initialize_options(self):
+ pass
+
+ def finalize_options(self):
+ pass
+
+ def run(self):
+ subprocess.check_call(['rsync', '-aHv', '--del', os.path.join(basedir, 'doc', 'html') + '/',
+ 'ebox.rath.org:/srv/www.rath.org/llfuse-docs/'])
+
class build_cython(setuptools.Command):
user_options = []
boolean_options = []
diff --git a/src/fuse_api.pxi b/src/fuse_api.pxi
index f93365f..62060c6 100644
--- a/src/fuse_api.pxi
+++ b/src/fuse_api.pxi
@@ -213,8 +213,13 @@ def getxattr(path, name, size_t size_guess=128, namespace='user'):
# active, it's expected to improve performance because we move pages from the
# page instead of copying them.
#
-default_options = frozenset(('big_writes', 'nonempty', 'default_permissions',
- 'no_splice_read', 'splice_write', 'splice_move'))
+if os.uname()[0] == 'Darwin':
+ default_options = frozenset(('big_writes', 'default_permissions',
+ 'no_splice_read', 'splice_write', 'splice_move'))
+else:
+ default_options = frozenset(('big_writes', 'nonempty', 'default_permissions',
+ 'no_splice_read', 'splice_write', 'splice_move'))
+
def init(ops, mountpoint, options=default_options):
'''Initialize and mount FUSE file system
@@ -283,11 +288,11 @@ def main(workers=None):
have terminated when `main` returns.
While this function is running, special signal handlers will be installed
- for the *SIGTERM*, *SIGINT* (Ctrl-C), *SIGHUP* and *SIGPIPE*
+ for the *SIGTERM*, *SIGINT* (Ctrl-C), *SIGHUP*, *SIGUSR1* and *SIGPIPE*
signals. *SIGPIPE* will be ignored, while the other three signals will cause
request processing to stop and the function to return. *SIGINT* (Ctrl-C)
will thus *not* result in a `KeyboardInterrupt` exception while this
- function is runnnig.
+ function is runnning.
When the function returns because the file system has received an unmount
request it will return `None`. If it returns because it has received a
@@ -372,9 +377,7 @@ cdef session_loop(void* mem, size_t size):
buf.pos = 0
buf.flags = 0
with nogil:
- pthread_setcancelstate(PTHREAD_CANCEL_ENABLE, NULL);
res = fuse_session_receive_buf(session, &buf, &ch)
- pthread_setcancelstate(PTHREAD_CANCEL_DISABLE, NULL);
if res == -errno.EINTR:
continue
@@ -454,8 +457,7 @@ cdef session_loop_mt(workers):
wd[i].bufsize = bufsize
wd[i].buf = calloc_or_raise(1, bufsize)
- # Disable signal reception in new thread
- # (FUSE does the same, probably for a good reason)
+ # Ensure that signals get delivered to main thread
pthread_sigmask(SIG_BLOCK, &newset, &oldset)
res = pthread_create(&wd[i].thread_id, NULL, &worker_start, wd+i)
pthread_sigmask(SIG_SETMASK, &oldset, NULL)
@@ -471,6 +473,10 @@ cdef session_loop_mt(workers):
finally:
for i in range(workers):
if wd[i].started:
+ res = pthread_kill(wd[i].thread_id, signal.SIGUSR1)
+ # Thread may have terminated already
+ if res != 0 and res != errno.ESRCH:
+ log.error('pthread_kill failed with: %s', strerror(res))
with nogil:
res = pthread_join(wd[i].thread_id, NULL)
if res != 0:
@@ -483,12 +489,22 @@ cdef session_loop_mt(workers):
def close(unmount=True):
- '''Unmount file system and clean up
-
- If *unmount* is False, only clean up operations are peformed, but
- the file system is not unmounted. As long as the file system
- process is still running, all requests will hang. Once the process
- has terminated, these (and all future) requests fail with ESHUTDOWN.
+ '''Clean up and ensure filesystem is unmounted
+
+ If *unmount* is False, only clean up operations are peformed, but the file
+ system is not explicitly unmounted.
+
+ Normally, the filesystem is unmounted by the user calling umount(8) or
+ fusermount(1), which then terminates the FUSE main loop. However, the loop
+ may also terminate as a result of an exception or a signal. In this case the
+ filesystem remains mounted, but any attempt to access it will block (while
+ the filesystem process is still running) or (after the filesystem process
+ has terminated) return an error. If *unmount* is True, this function will
+ ensure that the filesystem is properly unmounted.
+
+ Note: if the connection to the kernel is terminated via the
+ ``/sys/fs/fuse/connections/`` interface, this function will *not* unmount
+ the filesystem even if *unmount* is True.
'''
global mountpoint_b
diff --git a/src/llfuse.c b/src/llfuse.c
index 08dadbf..4ba8aaf 100644
--- a/src/llfuse.c
+++ b/src/llfuse.c
@@ -674,7 +674,7 @@ typedef void (*__pyx_t_4libc_6signal_sighandler_t)(int);
struct __pyx_t_6llfuse_worker_data_t;
typedef struct __pyx_t_6llfuse_worker_data_t __pyx_t_6llfuse_worker_data_t;
-/* "src/fuse_api.pxi":389
+/* "src/fuse_api.pxi":392
* fuse_session_process_buf(session, &buf, ch)
*
* ctypedef struct worker_data_t: # <<<<<<<<<<<<<<
@@ -1350,6 +1350,9 @@ static void __Pyx_AddTraceback(const char *funcname, int c_line,
static CYTHON_INLINE PyObject* __Pyx_PyInt_From_int(int value);
/* CIntToPy.proto */
+static CYTHON_INLINE PyObject* __Pyx_PyInt_From_long(long value);
+
+/* CIntToPy.proto */
static CYTHON_INLINE PyObject* __Pyx_PyInt_From_fuse_ino_t(fuse_ino_t value);
/* CIntToPy.proto */
@@ -1371,9 +1374,6 @@ static CYTHON_INLINE PyObject* __Pyx_PyInt_From_off_t(off_t value);
static CYTHON_INLINE PyObject* __Pyx_PyInt_From_uint32_t(uint32_t value);
/* CIntToPy.proto */
-static CYTHON_INLINE PyObject* __Pyx_PyInt_From_long(long value);
-
-/* CIntToPy.proto */
static CYTHON_INLINE PyObject* __Pyx_PyInt_From_uid_t(uid_t value);
/* CIntToPy.proto */
@@ -1556,7 +1556,7 @@ static PyObject *__pyx_v_6llfuse_exc_info = 0;
static int __pyx_v_6llfuse_exit_reason;
static pthread_mutex_t __pyx_v_6llfuse_exc_info_mutex;
static PyObject *__pyx_v_6llfuse__notify_queue = 0;
-static struct sigaction __pyx_v_6llfuse_sa_backup[4];
+static struct sigaction __pyx_v_6llfuse_sa_backup[5];
static void __pyx_f_6llfuse_fuse_init(void *, struct fuse_conn_info *); /*proto*/
static void __pyx_f_6llfuse_fuse_destroy(void *); /*proto*/
static void __pyx_f_6llfuse_fuse_lookup(fuse_req_t, fuse_ino_t, const char *); /*proto*/
@@ -1601,6 +1601,7 @@ static PyObject *__pyx_f_6llfuse_bytes2str(PyObject *); /*proto*/
static PyObject *__pyx_f_6llfuse_strerror(int); /*proto*/
static PyObject *__pyx_f_6llfuse_PyBytes_from_bufvec(struct fuse_bufvec *); /*proto*/
static void __pyx_f_6llfuse_signal_handler(int, siginfo_t *, void *); /*proto*/
+static void __pyx_f_6llfuse_do_nothing(int, siginfo_t *, void *); /*proto*/
static int __pyx_f_6llfuse_sigaction_p(int, struct sigaction *, struct sigaction *); /*proto*/
static PyObject *__pyx_f_6llfuse_set_signal_handlers(void); /*proto*/
static PyObject *__pyx_f_6llfuse_restore_signal_handlers(void); /*proto*/
@@ -1699,8 +1700,10 @@ static const char __pyx_k_split[] = "split";
static const char __pyx_k_start[] = "start";
static const char __pyx_k_str_t[] = "str_t";
static const char __pyx_k_strip[] = "strip";
+static const char __pyx_k_uname[] = "uname";
static const char __pyx_k_value[] = "value";
static const char __pyx_k_write[] = "write";
+static const char __pyx_k_Darwin[] = "Darwin";
static const char __pyx_k_Groups[] = "Groups:";
static const char __pyx_k_Thread[] = "Thread";
static const char __pyx_k_access[] = "access";
@@ -1905,6 +1908,7 @@ static const char __pyx_k_Calling_fuse_session_loop[] = "Calling fuse_session_lo
static const char __pyx_k_fuse_buf_copy_failed_with[] = "fuse_buf_copy failed with ";
static const char __pyx_k_pthread_create_failed_with[] = "pthread_create failed with ";
static const char __pyx_k_pthread_join_failed_with_s[] = "pthread_join failed with: %s";
+static const char __pyx_k_pthread_kill_failed_with_s[] = "pthread_kill failed with: %s";
static const char __pyx_k_Calling_fuse_session_destroy[] = "Calling fuse_session_destroy";
static const char __pyx_k_Calling_fuse_session_add_chan[] = "Calling fuse_session_add_chan";
static const char __pyx_k_Need_to_call_init_before_main[] = "Need to call init() before main()";
@@ -1979,6 +1983,7 @@ static PyObject *__pyx_kp_u_Calling_fuse_session_destroy;
static PyObject *__pyx_kp_u_Calling_fuse_session_loop;
static PyObject *__pyx_kp_u_Calling_fuse_session_remove_chan;
static PyObject *__pyx_kp_u_Calling_fuse_unmount;
+static PyObject *__pyx_n_u_Darwin;
static PyObject *__pyx_n_u_ENOATTR;
static PyObject *__pyx_kp_u_Exception_after_kill;
static PyObject *__pyx_n_s_ExitStack;
@@ -2244,6 +2249,7 @@ static PyObject *__pyx_n_s_prepare;
static PyObject *__pyx_kp_u_proc_d_status;
static PyObject *__pyx_kp_u_pthread_create_failed_with;
static PyObject *__pyx_kp_u_pthread_join_failed_with_s;
+static PyObject *__pyx_kp_u_pthread_kill_failed_with_s;
static PyObject *__pyx_kp_u_pthread_mutex_lock_failed_with_s;
static PyObject *__pyx_kp_u_pthread_mutex_ulock_failed_with;
static PyObject *__pyx_n_s_put;
@@ -2308,6 +2314,7 @@ static PyObject *__pyx_n_s_threading;
static PyObject *__pyx_n_s_timeout;
static PyObject *__pyx_n_s_tmp;
static PyObject *__pyx_n_s_traceback;
+static PyObject *__pyx_n_s_uname;
static PyObject *__pyx_kp_u_unknown_flag_s_o;
static PyObject *__pyx_n_s_unlink;
static PyObject *__pyx_n_s_unmount;
@@ -2586,12 +2593,13 @@ static PyObject *__pyx_tuple__154;
static PyObject *__pyx_tuple__156;
static PyObject *__pyx_tuple__158;
static PyObject *__pyx_tuple__159;
-static PyObject *__pyx_tuple__161;
-static PyObject *__pyx_tuple__163;
-static PyObject *__pyx_tuple__165;
-static PyObject *__pyx_tuple__167;
-static PyObject *__pyx_tuple__171;
-static PyObject *__pyx_tuple__173;
+static PyObject *__pyx_tuple__160;
+static PyObject *__pyx_tuple__162;
+static PyObject *__pyx_tuple__164;
+static PyObject *__pyx_tuple__166;
+static PyObject *__pyx_tuple__168;
+static PyObject *__pyx_tuple__172;
+static PyObject *__pyx_tuple__174;
static PyObject *__pyx_codeobj__87;
static PyObject *__pyx_codeobj__89;
static PyObject *__pyx_codeobj__91;
@@ -2628,15 +2636,15 @@ static PyObject *__pyx_codeobj__151;
static PyObject *__pyx_codeobj__153;
static PyObject *__pyx_codeobj__155;
static PyObject *__pyx_codeobj__157;
-static PyObject *__pyx_codeobj__160;
-static PyObject *__pyx_codeobj__162;
-static PyObject *__pyx_codeobj__164;
-static PyObject *__pyx_codeobj__166;
-static PyObject *__pyx_codeobj__168;
+static PyObject *__pyx_codeobj__161;
+static PyObject *__pyx_codeobj__163;
+static PyObject *__pyx_codeobj__165;
+static PyObject *__pyx_codeobj__167;
static PyObject *__pyx_codeobj__169;
static PyObject *__pyx_codeobj__170;
-static PyObject *__pyx_codeobj__172;
-static PyObject *__pyx_codeobj__174;
+static PyObject *__pyx_codeobj__171;
+static PyObject *__pyx_codeobj__173;
+static PyObject *__pyx_codeobj__175;
/* "src/operations.pxi":28
* '''
@@ -35482,7 +35490,7 @@ static void __pyx_f_6llfuse_signal_handler(int __pyx_v_sig, CYTHON_UNUSED siginf
* fuse_session_exit(session)
* exit_reason = sig # <<<<<<<<<<<<<<
*
- * cdef int sigaction_p(int sig, sigaction_t *sa,
+ * cdef void do_nothing(int sig, siginfo_t *si, void* ctx) nogil:
*/
__pyx_v_6llfuse_exit_reason = __pyx_v_sig;
@@ -35500,6 +35508,19 @@ static void __pyx_f_6llfuse_signal_handler(int __pyx_v_sig, CYTHON_UNUSED siginf
/* "src/misc.pxi":702
* exit_reason = sig
*
+ * cdef void do_nothing(int sig, siginfo_t *si, void* ctx) nogil: # <<<<<<<<<<<<<<
+ * pass
+ *
+ */
+
+static void __pyx_f_6llfuse_do_nothing(CYTHON_UNUSED int __pyx_v_sig, CYTHON_UNUSED siginfo_t *__pyx_v_si, CYTHON_UNUSED void *__pyx_v_ctx) {
+
+ /* function exit code */
+}
+
+/* "src/misc.pxi":705
+ * pass
+ *
* cdef int sigaction_p(int sig, sigaction_t *sa, # <<<<<<<<<<<<<<
* sigaction_t *old_sa) except -1:
* cdef int res
@@ -35515,7 +35536,7 @@ static int __pyx_f_6llfuse_sigaction_p(int __pyx_v_sig, struct sigaction *__pyx_
PyObject *__pyx_t_4 = NULL;
__Pyx_RefNannySetupContext("sigaction_p", 0);
- /* "src/misc.pxi":705
+ /* "src/misc.pxi":708
* sigaction_t *old_sa) except -1:
* cdef int res
* res = sigaction(sig, sa, old_sa) # <<<<<<<<<<<<<<
@@ -35524,7 +35545,7 @@ static int __pyx_f_6llfuse_sigaction_p(int __pyx_v_sig, struct sigaction *__pyx_
*/
__pyx_v_res = sigaction(__pyx_v_sig, __pyx_v_sa, __pyx_v_old_sa);
- /* "src/misc.pxi":706
+ /* "src/misc.pxi":709
* cdef int res
* res = sigaction(sig, sa, old_sa)
* if res != 0: # <<<<<<<<<<<<<<
@@ -35534,37 +35555,37 @@ static int __pyx_f_6llfuse_sigaction_p(int __pyx_v_sig, struct sigaction *__pyx_
__pyx_t_1 = ((__pyx_v_res != 0) != 0);
if (__pyx_t_1) {
- /* "src/misc.pxi":707
+ /* "src/misc.pxi":710
* res = sigaction(sig, sa, old_sa)
* if res != 0:
* raise OSError(errno.errno, 'sigaction failed with ' # <<<<<<<<<<<<<<
* + strerror(errno.errno))
* return 0
*/
- __pyx_t_2 = __Pyx_PyInt_From_int(errno); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 707, __pyx_L1_error)
+ __pyx_t_2 = __Pyx_PyInt_From_int(errno); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 710, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
- /* "src/misc.pxi":708
+ /* "src/misc.pxi":711
* if res != 0:
* raise OSError(errno.errno, 'sigaction failed with '
* + strerror(errno.errno)) # <<<<<<<<<<<<<<
* return 0
*
*/
- __pyx_t_3 = __pyx_f_6llfuse_strerror(errno); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 708, __pyx_L1_error)
+ __pyx_t_3 = __pyx_f_6llfuse_strerror(errno); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 711, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
- __pyx_t_4 = PyNumber_Add(__pyx_kp_u_sigaction_failed_with, __pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 708, __pyx_L1_error)
+ __pyx_t_4 = PyNumber_Add(__pyx_kp_u_sigaction_failed_with, __pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 711, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- /* "src/misc.pxi":707
+ /* "src/misc.pxi":710
* res = sigaction(sig, sa, old_sa)
* if res != 0:
* raise OSError(errno.errno, 'sigaction failed with ' # <<<<<<<<<<<<<<
* + strerror(errno.errno))
* return 0
*/
- __pyx_t_3 = PyTuple_New(2); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 707, __pyx_L1_error)
+ __pyx_t_3 = PyTuple_New(2); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 710, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
__Pyx_GIVEREF(__pyx_t_2);
PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_2);
@@ -35572,14 +35593,14 @@ static int __pyx_f_6llfuse_sigaction_p(int __pyx_v_sig, struct sigaction *__pyx_
PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_t_4);
__pyx_t_2 = 0;
__pyx_t_4 = 0;
- __pyx_t_4 = __Pyx_PyObject_Call(__pyx_builtin_OSError, __pyx_t_3, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 707, __pyx_L1_error)
+ __pyx_t_4 = __Pyx_PyObject_Call(__pyx_builtin_OSError, __pyx_t_3, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 710, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
__Pyx_Raise(__pyx_t_4, 0, 0, 0);
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- __PYX_ERR(2, 707, __pyx_L1_error)
+ __PYX_ERR(2, 710, __pyx_L1_error)
- /* "src/misc.pxi":706
+ /* "src/misc.pxi":709
* cdef int res
* res = sigaction(sig, sa, old_sa)
* if res != 0: # <<<<<<<<<<<<<<
@@ -35588,18 +35609,18 @@ static int __pyx_f_6llfuse_sigaction_p(int __pyx_v_sig, struct sigaction *__pyx_
*/
}
- /* "src/misc.pxi":709
+ /* "src/misc.pxi":712
* raise OSError(errno.errno, 'sigaction failed with '
* + strerror(errno.errno))
* return 0 # <<<<<<<<<<<<<<
*
- * cdef sigaction_t sa_backup[4]
+ * cdef sigaction_t sa_backup[5]
*/
__pyx_r = 0;
goto __pyx_L0;
- /* "src/misc.pxi":702
- * exit_reason = sig
+ /* "src/misc.pxi":705
+ * pass
*
* cdef int sigaction_p(int sig, sigaction_t *sa, # <<<<<<<<<<<<<<
* sigaction_t *old_sa) except -1:
@@ -35618,9 +35639,9 @@ static int __pyx_f_6llfuse_sigaction_p(int __pyx_v_sig, struct sigaction *__pyx_
return __pyx_r;
}
-/* "src/misc.pxi":712
+/* "src/misc.pxi":715
*
- * cdef sigaction_t sa_backup[4]
+ * cdef sigaction_t sa_backup[5]
* cdef set_signal_handlers(): # <<<<<<<<<<<<<<
* cdef sigaction_t sa
*
@@ -35633,7 +35654,7 @@ static PyObject *__pyx_f_6llfuse_set_signal_handlers(void) {
int __pyx_t_1;
__Pyx_RefNannySetupContext("set_signal_handlers", 0);
- /* "src/misc.pxi":715
+ /* "src/misc.pxi":718
* cdef sigaction_t sa
*
* sigemptyset(&sa.sa_mask) # <<<<<<<<<<<<<<
@@ -35642,7 +35663,7 @@ static PyObject *__pyx_f_6llfuse_set_signal_handlers(void) {
*/
sigemptyset((&__pyx_v_sa.sa_mask));
- /* "src/misc.pxi":716
+ /* "src/misc.pxi":719
*
* sigemptyset(&sa.sa_mask)
* sa.sa_sigaction = &signal_handler # <<<<<<<<<<<<<<
@@ -35651,7 +35672,7 @@ static PyObject *__pyx_f_6llfuse_set_signal_handlers(void) {
*/
__pyx_v_sa.sa_sigaction = (&__pyx_f_6llfuse_signal_handler);
- /* "src/misc.pxi":717
+ /* "src/misc.pxi":720
* sigemptyset(&sa.sa_mask)
* sa.sa_sigaction = &signal_handler
* sa.sa_flags = SA_SIGINFO # <<<<<<<<<<<<<<
@@ -35660,63 +35681,90 @@ static PyObject *__pyx_f_6llfuse_set_signal_handlers(void) {
*/
__pyx_v_sa.sa_flags = SA_SIGINFO;
- /* "src/misc.pxi":718
+ /* "src/misc.pxi":721
* sa.sa_sigaction = &signal_handler
* sa.sa_flags = SA_SIGINFO
* sigaction_p(signal.SIGTERM, &sa, &sa_backup[0]) # <<<<<<<<<<<<<<
* sigaction_p(signal.SIGINT, &sa, &sa_backup[1])
* sigaction_p(signal.SIGHUP, &sa, &sa_backup[2])
*/
- __pyx_t_1 = __pyx_f_6llfuse_sigaction_p(SIGTERM, (&__pyx_v_sa), (&(__pyx_v_6llfuse_sa_backup[0]))); if (unlikely(__pyx_t_1 == -1)) __PYX_ERR(2, 718, __pyx_L1_error)
+ __pyx_t_1 = __pyx_f_6llfuse_sigaction_p(SIGTERM, (&__pyx_v_sa), (&(__pyx_v_6llfuse_sa_backup[0]))); if (unlikely(__pyx_t_1 == -1)) __PYX_ERR(2, 721, __pyx_L1_error)
- /* "src/misc.pxi":719
+ /* "src/misc.pxi":722
* sa.sa_flags = SA_SIGINFO
* sigaction_p(signal.SIGTERM, &sa, &sa_backup[0])
* sigaction_p(signal.SIGINT, &sa, &sa_backup[1]) # <<<<<<<<<<<<<<
* sigaction_p(signal.SIGHUP, &sa, &sa_backup[2])
*
*/
- __pyx_t_1 = __pyx_f_6llfuse_sigaction_p(SIGINT, (&__pyx_v_sa), (&(__pyx_v_6llfuse_sa_backup[1]))); if (unlikely(__pyx_t_1 == -1)) __PYX_ERR(2, 719, __pyx_L1_error)
+ __pyx_t_1 = __pyx_f_6llfuse_sigaction_p(SIGINT, (&__pyx_v_sa), (&(__pyx_v_6llfuse_sa_backup[1]))); if (unlikely(__pyx_t_1 == -1)) __PYX_ERR(2, 722, __pyx_L1_error)
- /* "src/misc.pxi":720
+ /* "src/misc.pxi":723
* sigaction_p(signal.SIGTERM, &sa, &sa_backup[0])
* sigaction_p(signal.SIGINT, &sa, &sa_backup[1])
* sigaction_p(signal.SIGHUP, &sa, &sa_backup[2]) # <<<<<<<<<<<<<<
*
+ * # This is used to interrupt system calls without
+ */
+ __pyx_t_1 = __pyx_f_6llfuse_sigaction_p(SIGHUP, (&__pyx_v_sa), (&(__pyx_v_6llfuse_sa_backup[2]))); if (unlikely(__pyx_t_1 == -1)) __PYX_ERR(2, 723, __pyx_L1_error)
+
+ /* "src/misc.pxi":727
+ * # This is used to interrupt system calls without
+ * # doing anything else.
+ * sa.sa_sigaction = &do_nothing # <<<<<<<<<<<<<<
+ * sa.sa_flags = SA_SIGINFO
+ * sigaction_p(signal.SIGUSR1, &sa, &sa_backup[3])
+ */
+ __pyx_v_sa.sa_sigaction = (&__pyx_f_6llfuse_do_nothing);
+
+ /* "src/misc.pxi":728
+ * # doing anything else.
+ * sa.sa_sigaction = &do_nothing
+ * sa.sa_flags = SA_SIGINFO # <<<<<<<<<<<<<<
+ * sigaction_p(signal.SIGUSR1, &sa, &sa_backup[3])
+ *
+ */
+ __pyx_v_sa.sa_flags = SA_SIGINFO;
+
+ /* "src/misc.pxi":729
+ * sa.sa_sigaction = &do_nothing
+ * sa.sa_flags = SA_SIGINFO
+ * sigaction_p(signal.SIGUSR1, &sa, &sa_backup[3]) # <<<<<<<<<<<<<<
+ *
* sa.sa_handler = signal.SIG_IGN
*/
- __pyx_t_1 = __pyx_f_6llfuse_sigaction_p(SIGHUP, (&__pyx_v_sa), (&(__pyx_v_6llfuse_sa_backup[2]))); if (unlikely(__pyx_t_1 == -1)) __PYX_ERR(2, 720, __pyx_L1_error)
+ __pyx_t_1 = __pyx_f_6llfuse_sigaction_p(SIGUSR1, (&__pyx_v_sa), (&(__pyx_v_6llfuse_sa_backup[3]))); if (unlikely(__pyx_t_1 == -1)) __PYX_ERR(2, 729, __pyx_L1_error)
- /* "src/misc.pxi":722
- * sigaction_p(signal.SIGHUP, &sa, &sa_backup[2])
+ /* "src/misc.pxi":731
+ * sigaction_p(signal.SIGUSR1, &sa, &sa_backup[3])
*
* sa.sa_handler = signal.SIG_IGN # <<<<<<<<<<<<<<
* sa.sa_flags = 0
- * sigaction_p(signal.SIGPIPE, &sa, &sa_backup[3])
+ * sigaction_p(signal.SIGPIPE, &sa, &sa_backup[4])
*/
__pyx_v_sa.sa_handler = SIG_IGN;
- /* "src/misc.pxi":723
+ /* "src/misc.pxi":732
*
* sa.sa_handler = signal.SIG_IGN
* sa.sa_flags = 0 # <<<<<<<<<<<<<<
- * sigaction_p(signal.SIGPIPE, &sa, &sa_backup[3])
+ * sigaction_p(signal.SIGPIPE, &sa, &sa_backup[4])
*
*/
__pyx_v_sa.sa_flags = 0;
- /* "src/misc.pxi":724
+ /* "src/misc.pxi":733
* sa.sa_handler = signal.SIG_IGN
* sa.sa_flags = 0
- * sigaction_p(signal.SIGPIPE, &sa, &sa_backup[3]) # <<<<<<<<<<<<<<
+ * sigaction_p(signal.SIGPIPE, &sa, &sa_backup[4]) # <<<<<<<<<<<<<<
*
* cdef restore_signal_handlers():
*/
- __pyx_t_1 = __pyx_f_6llfuse_sigaction_p(SIGPIPE, (&__pyx_v_sa), (&(__pyx_v_6llfuse_sa_backup[3]))); if (unlikely(__pyx_t_1 == -1)) __PYX_ERR(2, 724, __pyx_L1_error)
+ __pyx_t_1 = __pyx_f_6llfuse_sigaction_p(SIGPIPE, (&__pyx_v_sa), (&(__pyx_v_6llfuse_sa_backup[4]))); if (unlikely(__pyx_t_1 == -1)) __PYX_ERR(2, 733, __pyx_L1_error)
- /* "src/misc.pxi":712
+ /* "src/misc.pxi":715
*
- * cdef sigaction_t sa_backup[4]
+ * cdef sigaction_t sa_backup[5]
* cdef set_signal_handlers(): # <<<<<<<<<<<<<<
* cdef sigaction_t sa
*
@@ -35734,8 +35782,8 @@ static PyObject *__pyx_f_6llfuse_set_signal_handlers(void) {
return __pyx_r;
}
-/* "src/misc.pxi":726
- * sigaction_p(signal.SIGPIPE, &sa, &sa_backup[3])
+/* "src/misc.pxi":735
+ * sigaction_p(signal.SIGPIPE, &sa, &sa_backup[4])
*
* cdef restore_signal_handlers(): # <<<<<<<<<<<<<<
* sigaction_p(signal.SIGTERM, &sa_backup[0], NULL)
@@ -35748,44 +35796,53 @@ static PyObject *__pyx_f_6llfuse_restore_signal_handlers(void) {
int __pyx_t_1;
__Pyx_RefNannySetupContext("restore_signal_handlers", 0);
- /* "src/misc.pxi":727
+ /* "src/misc.pxi":736
*
* cdef restore_signal_handlers():
* sigaction_p(signal.SIGTERM, &sa_backup[0], NULL) # <<<<<<<<<<<<<<
* sigaction_p(signal.SIGINT, &sa_backup[1], NULL)
* sigaction_p(signal.SIGHUP, &sa_backup[2], NULL)
*/
- __pyx_t_1 = __pyx_f_6llfuse_sigaction_p(SIGTERM, (&(__pyx_v_6llfuse_sa_backup[0])), NULL); if (unlikely(__pyx_t_1 == -1)) __PYX_ERR(2, 727, __pyx_L1_error)
+ __pyx_t_1 = __pyx_f_6llfuse_sigaction_p(SIGTERM, (&(__pyx_v_6llfuse_sa_backup[0])), NULL); if (unlikely(__pyx_t_1 == -1)) __PYX_ERR(2, 736, __pyx_L1_error)
- /* "src/misc.pxi":728
+ /* "src/misc.pxi":737
* cdef restore_signal_handlers():
* sigaction_p(signal.SIGTERM, &sa_backup[0], NULL)
* sigaction_p(signal.SIGINT, &sa_backup[1], NULL) # <<<<<<<<<<<<<<
* sigaction_p(signal.SIGHUP, &sa_backup[2], NULL)
- * sigaction_p(signal.SIGPIPE, &sa_backup[3], NULL)
+ * sigaction_p(signal.SIGUSR1, &sa_backup[3], NULL)
*/
- __pyx_t_1 = __pyx_f_6llfuse_sigaction_p(SIGINT, (&(__pyx_v_6llfuse_sa_backup[1])), NULL); if (unlikely(__pyx_t_1 == -1)) __PYX_ERR(2, 728, __pyx_L1_error)
+ __pyx_t_1 = __pyx_f_6llfuse_sigaction_p(SIGINT, (&(__pyx_v_6llfuse_sa_backup[1])), NULL); if (unlikely(__pyx_t_1 == -1)) __PYX_ERR(2, 737, __pyx_L1_error)
- /* "src/misc.pxi":729
+ /* "src/misc.pxi":738
* sigaction_p(signal.SIGTERM, &sa_backup[0], NULL)
* sigaction_p(signal.SIGINT, &sa_backup[1], NULL)
* sigaction_p(signal.SIGHUP, &sa_backup[2], NULL) # <<<<<<<<<<<<<<
- * sigaction_p(signal.SIGPIPE, &sa_backup[3], NULL)
- *
+ * sigaction_p(signal.SIGUSR1, &sa_backup[3], NULL)
+ * sigaction_p(signal.SIGPIPE, &sa_backup[4], NULL)
*/
- __pyx_t_1 = __pyx_f_6llfuse_sigaction_p(SIGHUP, (&(__pyx_v_6llfuse_sa_backup[2])), NULL); if (unlikely(__pyx_t_1 == -1)) __PYX_ERR(2, 729, __pyx_L1_error)
+ __pyx_t_1 = __pyx_f_6llfuse_sigaction_p(SIGHUP, (&(__pyx_v_6llfuse_sa_backup[2])), NULL); if (unlikely(__pyx_t_1 == -1)) __PYX_ERR(2, 738, __pyx_L1_error)
- /* "src/misc.pxi":730
+ /* "src/misc.pxi":739
* sigaction_p(signal.SIGINT, &sa_backup[1], NULL)
* sigaction_p(signal.SIGHUP, &sa_backup[2], NULL)
- * sigaction_p(signal.SIGPIPE, &sa_backup[3], NULL) # <<<<<<<<<<<<<<
+ * sigaction_p(signal.SIGUSR1, &sa_backup[3], NULL) # <<<<<<<<<<<<<<
+ * sigaction_p(signal.SIGPIPE, &sa_backup[4], NULL)
+ *
+ */
+ __pyx_t_1 = __pyx_f_6llfuse_sigaction_p(SIGUSR1, (&(__pyx_v_6llfuse_sa_backup[3])), NULL); if (unlikely(__pyx_t_1 == -1)) __PYX_ERR(2, 739, __pyx_L1_error)
+
+ /* "src/misc.pxi":740
+ * sigaction_p(signal.SIGHUP, &sa_backup[2], NULL)
+ * sigaction_p(signal.SIGUSR1, &sa_backup[3], NULL)
+ * sigaction_p(signal.SIGPIPE, &sa_backup[4], NULL) # <<<<<<<<<<<<<<
*
* cdef void* calloc_or_raise(size_t nmemb, size_t size) except NULL:
*/
- __pyx_t_1 = __pyx_f_6llfuse_sigaction_p(SIGPIPE, (&(__pyx_v_6llfuse_sa_backup[3])), NULL); if (unlikely(__pyx_t_1 == -1)) __PYX_ERR(2, 730, __pyx_L1_error)
+ __pyx_t_1 = __pyx_f_6llfuse_sigaction_p(SIGPIPE, (&(__pyx_v_6llfuse_sa_backup[4])), NULL); if (unlikely(__pyx_t_1 == -1)) __PYX_ERR(2, 740, __pyx_L1_error)
- /* "src/misc.pxi":726
- * sigaction_p(signal.SIGPIPE, &sa, &sa_backup[3])
+ /* "src/misc.pxi":735
+ * sigaction_p(signal.SIGPIPE, &sa, &sa_backup[4])
*
* cdef restore_signal_handlers(): # <<<<<<<<<<<<<<
* sigaction_p(signal.SIGTERM, &sa_backup[0], NULL)
@@ -35804,8 +35861,8 @@ static PyObject *__pyx_f_6llfuse_restore_signal_handlers(void) {
return __pyx_r;
}
-/* "src/misc.pxi":732
- * sigaction_p(signal.SIGPIPE, &sa_backup[3], NULL)
... 5571 lines suppressed ...
--
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/python-modules/packages/python-llfuse.git
More information about the Python-modules-commits
mailing list