static PyObject * nis_cat (PyObject *self, PyObject *args) { char *domain; char *map; struct ypall_callback cb; struct ypcallback_data data; PyObject *dict; int err; if (!PyArg_Parse(args, "s", &map)) return NULL; if ((err = yp_get_default_domain(&domain)) != 0) return nis_error(err); dict = PyDict_New (); if (dict == NULL) return NULL; cb.foreach = (foreachfunc)nis_foreach; data.dict = dict; map = nis_mapname (map, &data.fix); cb.data = (char *)&data; Py_BEGIN_ALLOW_THREADS err = yp_all (domain, map, &cb); Py_END_ALLOW_THREADS if (err != 0) { Py_DECREF(dict); return nis_error(err); } return dict; }
static PyObject * nis_match (PyObject *self, PyObject *args) { char *match; char *domain; int keylen, len; char *key, *map; int err; PyObject *res; int fix; if (!PyArg_Parse(args, "(t#s)", &key, &keylen, &map)) return NULL; if ((err = yp_get_default_domain(&domain)) != 0) return nis_error(err); map = nis_mapname (map, &fix); if (fix) keylen++; Py_BEGIN_ALLOW_THREADS err = yp_match (domain, map, key, keylen, &match, &len); Py_END_ALLOW_THREADS if (fix) len--; if (err != 0) return nis_error(err); res = PyString_FromStringAndSize (match, len); free (match); return res; }
static PyObject * nis_match (PyObject *self, PyObject *args, PyObject *kwdict) { char *match; char *domain = NULL; int keylen, len; char *key, *map; int err; PyObject *res; int fix; static char *kwlist[] = {"key", "map", "domain", NULL}; if (!PyArg_ParseTupleAndKeywords(args, kwdict, "s#s|s:match", kwlist, &key, &keylen, &map, &domain)) return NULL; if (!domain && ((err = yp_get_default_domain(&domain)) != 0)) return nis_error(err); map = nis_mapname (map, &fix); if (fix) keylen++; Py_BEGIN_ALLOW_THREADS err = yp_match (domain, map, key, keylen, &match, &len); Py_END_ALLOW_THREADS if (fix) len--; if (err != 0) return nis_error(err); res = PyUnicode_FromStringAndSize (match, len); free (match); return res; }
static PyObject * nis_cat (PyObject *self, PyObject *args, PyObject *kwdict) { char *domain = NULL; char *map; struct ypall_callback cb; struct ypcallback_data data; PyObject *dict; int err; static char *kwlist[] = {"map", "domain", NULL}; if (!PyArg_ParseTupleAndKeywords(args, kwdict, "s|s:cat", kwlist, &map, &domain)) return NULL; if (!domain && ((err = yp_get_default_domain(&domain)) != 0)) return nis_error(err); dict = PyDict_New (); if (dict == NULL) return NULL; cb.foreach = (foreachfunc)nis_foreach; data.dict = dict; map = nis_mapname (map, &data.fix); cb.data = (char *)&data; data.state = PyEval_SaveThread(); err = yp_all (domain, map, &cb); PyEval_RestoreThread(data.state); if (err != 0) { Py_DECREF(dict); return nis_error(err); } return dict; }
static PyObject * nis_match (PyObject *self, PyObject *args, PyObject *kwdict) { char *match; char *domain = NULL; Py_ssize_t keylen; int len; char *key, *map; int err; PyObject *ukey, *bkey, *res; int fix; static char *kwlist[] = {"key", "map", "domain", NULL}; if (!PyArg_ParseTupleAndKeywords(args, kwdict, "Us|s:match", kwlist, &ukey, &map, &domain)) return NULL; if ((bkey = PyUnicode_EncodeFSDefault(ukey)) == NULL) return NULL; /* check for embedded null bytes */ if (PyBytes_AsStringAndSize(bkey, &key, &keylen) == -1) { Py_DECREF(bkey); return NULL; } if (!domain && ((err = yp_get_default_domain(&domain)) != 0)) { Py_DECREF(bkey); return nis_error(err); } map = nis_mapname (map, &fix); if (fix) keylen++; Py_BEGIN_ALLOW_THREADS err = yp_match (domain, map, key, keylen, &match, &len); Py_END_ALLOW_THREADS Py_DECREF(bkey); if (fix) len--; if (err != 0) return nis_error(err); res = PyUnicode_DecodeFSDefaultAndSize(match, len); free (match); return res; }