From bf18b144c79fc2d322d627eccd267973b4ee3812 Mon Sep 17 00:00:00 2001 From: René 'Necoro' Neumann Date: Wed, 16 Apr 2008 18:22:40 +0200 Subject: Initted overlay --- .../files/fuse_python_accept_none.patch | 75 ++++++++++++++++++++++ 1 file changed, 75 insertions(+) create mode 100644 sys-fs/fuse-python/files/fuse_python_accept_none.patch (limited to 'sys-fs/fuse-python/files/fuse_python_accept_none.patch') diff --git a/sys-fs/fuse-python/files/fuse_python_accept_none.patch b/sys-fs/fuse-python/files/fuse_python_accept_none.patch new file mode 100644 index 0000000..9f71800 --- /dev/null +++ b/sys-fs/fuse-python/files/fuse_python_accept_none.patch @@ -0,0 +1,75 @@ +--- fuseparts/_fusemodule.c.old 2007-06-18 16:20:09.000000000 +0200 ++++ fuseparts/_fusemodule.c 2008-04-08 01:18:43.000000000 +0200 +@@ -182,8 +182,50 @@ + * the getattr type functions. + */ + +-#define fetchattr_soft_d(st, attr, defa) \ +- fetchattr_soft(st, attr) else st->attr = defa ++// (sorry ...) ++ ++#define good(attr) _GOOD_SPAGHETTI_ ## attr ++#define bad(attr) _BAD_SPAGHETTI_ ## attr ++ ++/* ++ * This macro checks whether an attribute is available and not None. ++ * Success --> set attribute and goto _GOOD_SPAGHETTI ++ * Failure --> goto _BAD_SPAGHETTI ++ * Error --> goto OUT_DECREF ++ */ ++#define fetchattr_soft_none_pre(st, attr) \ ++ if (PyObject_HasAttrString(v, #attr)) { \ ++ if (!(pytmp = PyObject_GetAttrString(v, #attr))) \ ++ goto OUT_DECREF; \ ++ else if (pytmp != Py_None) { \ ++ py2attr(st, attr) \ ++ goto good(attr); \ ++ } \ ++ else { \ ++ Py_DECREF(pytmp); \ ++ goto bad(attr); \ ++ } \ ++ } \ ++ goto bad(attr); ++ ++/** ++ * Calls fetchattr_soft_none_pre and ignores failure. ++ */ ++#define fetchattr_soft_none(st, attr) \ ++ fetchattr_soft_none_pre(st, attr); \ ++ good(attr): ; \ ++ bad(attr): ; ++ ++/** ++ * Calls fetchattr_soft_none_pre and sets a default value on failure. ++ */ ++#define fetchattr_soft_d(st, attr, defa) \ ++ fetchattr_soft_none_pre(st, attr); \ ++ bad(attr): \ ++ st->attr = defa; \ ++ good(attr): ; ++ ++// + + #define FETCH_STAT_DATA() \ + fetchattr(st, st_mode); \ +@@ -206,7 +248,7 @@ + * autotools so we just dare to throw these in as is. \ + */ \ + \ +- fetchattr_soft(st, st_rdev); \ ++ fetchattr_soft_none(st, st_rdev); \ + fetchattr_soft_d(st, st_blksize, 4096); \ + fetchattr_soft_d(st, st_blocks, (st->st_size + 511)/512) + +@@ -245,6 +287,10 @@ + #endif + + #undef fetchattr_soft_d ++#undef fetchattr_soft_none ++#undef fetchattr_soft_none_pre ++#undef good ++#undef bad + #undef FETCH_STAT_DATA + + static int -- cgit v1.2.3-70-g09d2