--- src/general.c.orig Thu Dec 30 19:54:07 2004 +++ src/general.c Thu Dec 30 20:00:11 2004 @@ -24,3 +24,17 @@ } return 1; } + +int +arg_to_long(PyObject *longobj, long *val) +{ + if (PyLong_Check(longobj)) + *val = PyLong_AsLong(longobj); + else if (PyInt_Check(longobj)) + *val = PyInt_AsLong(longobj); + else { + PyErr_SetString(PyExc_TypeError, "Argument must be int or long"); + return 0; + } + return 1; +} --- src/pyoggpacket.c.orig Mon Oct 7 01:04:57 2002 +++ src/pyoggpacket.c Thu Dec 30 20:06:50 2004 @@ -68,6 +68,10 @@ { if (strcmp(name, "granulepos") == 0) return PyLong_FromLongLong(PY_OGG_PACKET(self)->granulepos); + if (strcmp(name, "bos") == 0) + return PyLong_FromLongLong(PY_OGG_PACKET(self)->b_o_s); + if (strcmp(name, "eos") == 0) + return PyLong_FromLongLong(PY_OGG_PACKET(self)->e_o_s); return Py_FindMethod(py_ogg_packet_methods, self, name); } @@ -75,11 +79,26 @@ py_ogg_packet_setattr(PyObject *self, char *name, PyObject *value) { ogg_int64_t v; + long flagv; if (strcmp(name, "granulepos") == 0) { if (!arg_to_int64(value, &v)) return -1; PY_OGG_PACKET(self)->granulepos = v; + return 0; + } + + if (strcmp(name, "bos") == 0) { + if (!arg_to_long(value, &flagv)) + return -1; + PY_OGG_PACKET(self)->b_o_s = flagv; + return 0; + } + + if (strcmp(name, "eos") == 0) { + if (!arg_to_long(value, &flagv)) + return -1; + PY_OGG_PACKET(self)->e_o_s = flagv; return 0; }