if(PyMapping_HasKeyString(kwargs, "cb")) {
cb = PyMapping_GetItemString(kwargs, "cb");
if(PyCallable_Check(cb)) {
- ret = PyInt_FromLong(dc_queuecmd(qcmd_cb, cb, cmd, L"%%a", toks, NULL));
+ ret = PyInt_FromLong(dc_queuecmd(qcmd_cb, cb, cmd, L"%a", toks, NULL));
} else {
PyErr_SetString(PyExc_TypeError, "Callback must be callable");
Py_DECREF(cb);
}
} else {
- ret = PyInt_FromLong(dc_queuecmd(NULL, NULL, cmd, L"%%a", toks, NULL));
+ ret = PyInt_FromLong(dc_queuecmd(NULL, NULL, cmd, L"%a", toks, NULL));
}
out:
Py_RETURN_FALSE;
}
+static PyObject *mod_checkproto(PyObject *self, PyObject *args)
+{
+ PyObject *tmp;
+ struct respobj *resp;
+ int version;
+
+ version = DC_LATEST;
+ if(!PyArg_ParseTuple(args, "O|i", &tmp, &version))
+ return(NULL);
+ if(!PyObject_TypeCheck(tmp, &resptype)) {
+ PyErr_SetString(PyExc_TypeError, "first argument must be a response object");
+ return(NULL);
+ }
+ resp = (struct respobj *)tmp;
+ if(dc_checkprotocol(resp->resp, version))
+ Py_RETURN_FALSE;
+ else
+ Py_RETURN_TRUE;
+}
+
static PyMethodDef methods[] = {
{"connect", mod_connect, METH_VARARGS,
"Connect to a Dolda Connect server"},
"Use a standard algorithm to lex a search expression"},
{"wantwrite", (PyCFunction)mod_wantwrite, METH_NOARGS,
"Return a boolean indicating whether there is output to be fed to the server"},
+ {"checkproto", (PyCFunction)mod_checkproto, METH_VARARGS,
+ "Check so that the connect stanza returned by the server indicates support for the correct revision of the protocol"},
{NULL, NULL, 0, NULL}
};
m = Py_InitModule("dolmod", methods);
Py_INCREF(&resptype);
PyModule_AddObject(m, "Response", (PyObject *)&resptype);
+ PyModule_AddObject(m, "latest", Py_BuildValue("i", DC_LATEST));
dc_init();
}