From 69ba6b578059f5e7b027a573931b56100a43289f Mon Sep 17 00:00:00 2001 From: Mark Wooding Date: Tue, 7 Mar 2006 14:38:43 +0000 Subject: [PATCH] key: Fixing of expiry and deletion time properties. Allow them to be modified. Return the correct value for keys which never expire or are deleted. --- key.c | 42 ++++++++++++++++++++++++++++++++++++++---- 1 file changed, 38 insertions(+), 4 deletions(-) diff --git a/key.c b/key.c index c9accd3..57d01f9 100644 --- a/key.c +++ b/key.c @@ -1469,14 +1469,48 @@ static PyObject *kget_file(PyObject *me, void *hunoz) static PyObject *kget_type(PyObject *me, void *hunoz) { return (PyString_FromString(KEY_K(me)->type)); } static PyObject *kget_exptime(PyObject *me, void *hunoz) - { return (PyInt_FromLong(KEY_K(me)->exp)); } + { return (getulong(KEY_K(me)->exp)); } static PyObject *kget_deltime(PyObject *me, void *hunoz) - { return (PyInt_FromLong(KEY_K(me)->del)); } + { return (getulong(KEY_K(me)->del)); } static PyObject *kget_expiredp(PyObject *me, void *hunoz) { return (getbool(key_expired(KEY_K(me)))); } static PyObject *kget_attr(PyObject *me, void *hunoz) { return (keyattrs_make(me)); } +static int kset_exptime(PyObject *me, PyObject *x, void *hunoz) +{ + key *k = KEY_K(me); + unsigned long et; + + if ((et = PyLong_AsUnsignedLong(x)) == (unsigned long)-1 && PyErr_Occurred()) + goto end; + if (!(KEY_KF(me)->f & KF_WRITE)) + KEYERR(KERR_READONLY); + k->exp = et; + KEY_KF(me)->f |= KF_MODIFIED; + return (0); +end: + return (-1); +} + +static int kset_deltime(PyObject *me, PyObject *x, void *hunoz) +{ + key *k = KEY_K(me); + unsigned long dt; + + if ((dt = PyLong_AsUnsignedLong(x)) == (unsigned long)-1 && PyErr_Occurred()) + goto end; + if (dt == KEXP_FOREVER && k->exp != KEXP_FOREVER) + VALERR("key will eventually expire"); + if (!(KEY_KF(me)->f & KF_WRITE)) + KEYERR(KERR_READONLY); + k->del = dt; + KEY_KF(me)->f |= KF_MODIFIED; + return (0); +end: + return (-1); +} + static PyObject *kget_data(PyObject *me, void *hunoz) { key_data *kd = KEY_K(me)->k; @@ -1560,8 +1594,8 @@ static PyGetSetDef key_pygetset[] = { GET (id, "KEY.id -> ID") GETSET(tag, "KEY.tag -> TAG") GET (type, "KEY.type -> TYPE") - GET (exptime, "KEY.exptime -> TIME") - GET (deltime, "KEY.deltime -> TIME") + GETSET(exptime, "KEY.exptime -> TIME") + GETSET(deltime, "KEY.deltime -> TIME") GET (expiredp, "KEY.expiredp -> BOOL") GET (attr, "KEY.attr -> ATTRIBUTES") GETSET(data, "KEY.data -> KD") -- 2.11.0