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;
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")