[Python-modules-commits] r10289 - in packages/python-adns/trunk (9 files)

jandd at users.alioth.debian.org jandd at users.alioth.debian.org
Wed Nov 4 23:23:35 UTC 2009


    Date: Wednesday, November 4, 2009 @ 23:23:34
  Author: jandd
Revision: 10289

switch from direct upstream modifications to quilt

Added:
  packages/python-adns/trunk/debian/README.source
  packages/python-adns/trunk/debian/patches/
  packages/python-adns/trunk/debian/patches/01remove_shebang.patch
  packages/python-adns/trunk/debian/patches/series
Modified:
  packages/python-adns/trunk/debian/changelog
  packages/python-adns/trunk/debian/control
  packages/python-adns/trunk/debian/rules
Deleted:
  packages/python-adns/trunk/ADNS.py
  packages/python-adns/trunk/adnsmodule.c

Deleted: packages/python-adns/trunk/ADNS.py
===================================================================
--- packages/python-adns/trunk/ADNS.py	2009-11-04 22:43:01 UTC (rev 10288)
+++ packages/python-adns/trunk/ADNS.py	2009-11-04 23:23:34 UTC (rev 10289)
@@ -1,69 +0,0 @@
-"""High-level interface to adns."""
-
-import adns
-from exceptions import Exception
-
-class Error(Exception): pass
-
-class QueryEngine:
-
-    callback_submit = None
-    callback_submit_reverse = None
-    callback_submit_reverse_any = None
-    
-    def __init__(self, s=None):
-        self._s = s or adns.init(adns.iflags.noautosys)
-        self._queries = {}
-
-    def synchronous(self, qname, rr, flags=0):
-        return self._s.synchronous(qname, rr, flags)
-
-    def submit(self, qname, rr, flags=0, callback=None, extra=None):
-        callback = callback or self.callback_submit
-        if not callback: raise Error, "callback required"
-        q = self._s.submit(qname, rr, flags)
-        self._queries[q] = qname, rr, flags, callback, extra
-
-    def submit_reverse(self, qname, rr, flags=0, callback=None, extra=None):
-        callback = callback or self.callback_submit_reverse
-        if not callback: raise Error, "callback required"
-        q = self._s.submit_reverse(qname, rr, flags)
-        self._queries[q] = qname, rr, flags, callback, extra
-
-    def submit_reverse_any(self, qname, rr, flags=0,
-                           callback=None, extra=None):
-        callback = callback or self.callback_submit_reverse_any
-        if not callback: raise Error, "callback required"
-        q = self._s.submit_reverse_any(qname, rr, flags)
-        self._queries[q] = qname, rr, flags, callback, extra
-
-    def cancel(self, query):
-        query.cancel()
-        try: del self._queries[query]
-        except KeyError: pass
-        
-    def run(self, timeout=0):
-        for q in self._s.completed(timeout):
-            answer = q.check()
-            qname, rr, flags, callback, extra = self._queries[q]
-            del self._queries[q]
-            apply(callback, (answer, qname, rr, flags, extra))
-
-    def finished(self):
-        return not len(self._queries)
-
-    def finish(self):
-        while not self.finished():
-            self.run(1)
-
-    def run_max(self, max):
-        from time import time
-        quittime = time()+max
-        while not self.finished() and time()<=quittime:
-            self.run(1)
-
-    def globalsystemfailure(self):
-        self._s.globalsystemfailure()
-        self._queries.clear()
-
-init = QueryEngine

Deleted: packages/python-adns/trunk/adnsmodule.c
===================================================================
--- packages/python-adns/trunk/adnsmodule.c	2009-11-04 22:43:01 UTC (rev 10288)
+++ packages/python-adns/trunk/adnsmodule.c	2009-11-04 23:23:34 UTC (rev 10289)
@@ -1,1088 +0,0 @@
-/*
-This program is free software; you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation; either version 2, or (at your option)
-any later version.
-*/
-
-#include "Python.h"
-#include <adns.h>
-#include <string.h>
-#include <assert.h>
-#include <sys/socket.h>
-#include <netinet/in.h>
-#include <arpa/inet.h>
-
-static PyObject *ErrorObject;
-static PyObject *NotReadyError;
-static PyObject *LocalError;
-static PyObject *RemoteError, *RemoteFailureError, *RemoteTempError,
-	*RemoteConfigError;
-static PyObject *QueryError;
-static PyObject *PermanentError, *NXDomainError, *NoDataError;
-
-/* ----------------------------------------------------- */
-
-/* Declarations for objects of type ADNS_State */
-
-typedef struct {
-	PyObject_HEAD
-	adns_state state;
-} ADNS_Stateobject;
-
-staticforward PyTypeObject ADNS_Statetype;
-
-
-
-/* ---------------------------------------------------------------- */
-
-/* Declarations for objects of type ADNS_Query */
-
-typedef struct {
-	PyObject_HEAD
-	ADNS_Stateobject *s;
-	adns_query query;
-	PyObject *answer;
-	PyObject *exc_type;
-	PyObject *exc_value;
-	PyObject *exc_traceback;
-} ADNS_Queryobject;
-
-staticforward PyTypeObject ADNS_Querytype;
-
-
-
-/* ---------------------------------------------------------------- */
-
-typedef struct {
-	char *name;
-	int value;
-} _constant_class;
-
-static _constant_class adns_iflags[] = {
-	{ "noenv", adns_if_noenv },
-	{ "noerrprint", adns_if_noerrprint },
-	{ "noserverwarn", adns_if_noserverwarn },
-	{ "debug", adns_if_debug },
-	{ "logpid", adns_if_logpid },
-	{ "noautosys", adns_if_noautosys },
-	{ "eintr", adns_if_eintr },
-	{ "nosigpipe", adns_if_nosigpipe },
-	{ "checkc_entex", adns_if_checkc_entex },
-	{ "checkc_freq", adns_if_checkc_freq },
-	{ NULL, 0 },
-};
-
-static _constant_class adns_qflags[] = {
-	{ "search", adns_qf_search },
-	{ "usevc", adns_qf_usevc },
-	{ "owner", adns_qf_owner },
-	{ "quoteok_query", adns_qf_quoteok_query },
-	{ "quoteok_cname", adns_qf_quoteok_cname },
-	{ "quoteok_anshost", adns_qf_quoteok_anshost },
-	{ "quotefail_cname", adns_qf_quotefail_cname },
-	{ "cname_loose", adns_qf_cname_loose },
-	{ "cname_forbid", adns_qf_cname_forbid },
-	{ "internalmask", adns__qf_internalmask },
-	{ NULL, 0 },
-};
-
-static _constant_class adns_rr[] = {
-	{ "typemask", adns_rrt_typemask },
-	{ "deref", adns__qtf_deref },
-	{ "mail822", adns__qtf_mail822 },
-	{ "none", adns_r_none },
-	{ "A", adns_r_a },
-	{ "NSraw", adns_r_ns_raw },
-	{ "NS", adns_r_ns },
-	{ "CNAME", adns_r_cname },
-	{ "SOAraw", adns_r_soa_raw },
-	{ "SOA", adns_r_soa },
-	{ "PTRraw", adns_r_ptr_raw },
-	{ "PTR", adns_r_ptr },
-	{ "HINFO", adns_r_hinfo },
-	{ "MXraw", adns_r_mx_raw },
-	{ "MX", adns_r_mx },
-	{ "TXT", adns_r_txt },
-	{ "RPraw", adns_r_rp_raw },
-	{ "RP", adns_r_rp },
-	{ "ADDR", adns_r_addr },
-	{ NULL, 0 }
-};
-
-static _constant_class adns_s[] = {
-	{ "ok", adns_s_ok },
-	{ "nomemory", adns_s_nomemory },
-	{ "unknownrrtype", adns_s_unknownrrtype },
-	{ "systemfail", adns_s_systemfail },
-	{ "max_localfail", adns_s_max_localfail },
-	{ "timeout", adns_s_timeout },
-	{ "allservfail", adns_s_allservfail },
-	{ "norecurse", adns_s_norecurse },
-	{ "invalidresponse", adns_s_invalidresponse },
-	{ "unknownformat", adns_s_unknownformat },
-	{ "max_remotefail", adns_s_max_remotefail },
-	{ "rcodeservfail", adns_s_rcodeservfail },
-	{ "rcodeformaterror", adns_s_rcodeformaterror },
-	{ "rcodenotimplemented", adns_s_rcodenotimplemented },
-	{ "rcoderefused", adns_s_rcoderefused },
-	{ "rcodeunknown", adns_s_rcodeunknown },
-	{ "max_tempfail", adns_s_max_tempfail },
-	{ "inconsistent", adns_s_inconsistent },
-	{ "prohibitedcname", adns_s_prohibitedcname },
-	{ "answerdomaininvalid", adns_s_answerdomaininvalid },
-	{ "answerdomaintoolong", adns_s_answerdomaintoolong },
-	{ "invaliddata", adns_s_invaliddata },
-	{ "max_misconfig", adns_s_max_misconfig },
-	{ "querydomainwrong", adns_s_querydomainwrong },
-	{ "querydomaininvalid", adns_s_querydomaininvalid },
-	{ "querydomaintoolong", adns_s_querydomaintoolong },
-	{ "max_misquery", adns_s_max_misquery },
-	{ "nxdomain", adns_s_nxdomain },
-	{ "nodata", adns_s_nodata },
-	{ "max_permfail", adns_s_max_permfail },
-	{ NULL, 0 }
-};
-
-static PyObject *
-interpret_addr(
-	adns_rr_addr *v
-	)
-{
-	PyObject *o;
-	o = Py_BuildValue("is", v->addr.inet.sin_family, 
-			  inet_ntoa(v->addr.inet.sin_addr)) ;
-	return o;
-}
-
-static PyObject *
-interpret_hostaddr(
-	adns_rr_hostaddr *hostaddr
-	)
-{
-	PyObject *o, *addrs;
-	if (hostaddr->naddrs == -1) {
-		addrs = Py_None;
-		Py_INCREF(addrs);
-	} else {
-		int i;
-		addrs = PyTuple_New(hostaddr->naddrs);
-		for (i=0; i<hostaddr->naddrs; i++) {
-			adns_rr_addr *v = hostaddr->addrs+i;
-			PyTuple_SET_ITEM(addrs,i,interpret_addr(v));
-		}
-	}
-	o = Py_BuildValue("siO", hostaddr->host, hostaddr->astatus,
-			  addrs);
-	return o;
-}
-	
-static PyObject *
-interpret_answer(
-	adns_answer *answer
-	)
-{
-	PyObject *o, *rrs;
-	int i;
-	adns_rrtype t = answer->type & adns_rrt_typemask;
-	adns_rrtype td = answer->type & adns__qtf_deref;
-
-	rrs = PyTuple_New(answer->nrrs);
-	if (!rrs) return NULL;
-	for (i=0; i<answer->nrrs; i++) {
-		PyObject *a = NULL;
-		switch (t) {
-		case adns_r_a:
-			if (td) {
-				a = interpret_addr((answer->rrs.addr+i));
-			} else {
-				struct in_addr *v = answer->rrs.inaddr+i;
-				a = Py_BuildValue("s", inet_ntoa(*v));
-			}
-			break;
-		case adns_r_hinfo:
-			{
-				adns_rr_intstrpair *v = \
-					answer->rrs.intstrpair+i;
-				a = Py_BuildValue("s#s#", v->array[0].str,
-						  v->array[0].i,
-						  v->array[1].str,
-						  v->array[1].i);
-			}
-			break;
-		case adns_r_mx_raw:
-			if (td) {
-				adns_rr_inthostaddr *v = \
-					answer->rrs.inthostaddr+i;
-				a = Py_BuildValue("iO", v->i,
-						  interpret_hostaddr(&v->ha));
-			} else {
-				adns_rr_intstr *v = answer->rrs.intstr+i;
-				a = Py_BuildValue("is", v->i, v->str);
-			}
-			break;
-		case adns_r_ptr_raw:
-		case adns_r_cname:
-			{
-				char *(*v) = answer->rrs.str+i;
-				a = PyString_FromString(*v);
-			}
-			break;
-		case adns_r_txt:
-			{
-				PyObject *txt;
-				int array_len = 0;
-				int ai;
-				adns_rr_intstr *(*s) = answer->rrs.manyistr+i;
-
-				while ((*s)[array_len].i != -1)
-					array_len++;
-
-				if (!(a = PyTuple_New(array_len))) break;
-				for (ai = 0; ai < array_len; ai++)
-				{
-					txt = PyString_FromStringAndSize((*s)[ai].str, (*s)[ai].i);
-					if (!txt) {
-						Py_DECREF(a);
-						a = NULL;
-						break;
-					}
-					PyTuple_SET_ITEM(a, ai, txt);
-				}
-			}
-			break;
-		case adns_r_ns_raw:
-			if (td) {
-				a = interpret_hostaddr(answer->rrs.hostaddr+i);
-			} else {
-				char *(*v) = answer->rrs.str+i;
-				a = PyString_FromString(*v);
-			}
-			break;
-		case adns_r_soa_raw:
-			{
-				adns_rr_soa *v = answer->rrs.soa+i;
-				a = Py_BuildValue("sslllll", v->mname, v->rname,
-						  v->serial, v->refresh, v->retry,
-						  v->expire, v->minimum);
-			}
-			break;
-		case adns_r_rp:
-			{
-				adns_rr_strpair *v = answer->rrs.strpair+i;
-				a = Py_BuildValue("ss", v->array[0], v->array[1]);
-			}
-			break;
-		default:
-			a = Py_None;
-			Py_INCREF(a);
-		}
-		if (!a) {
-			Py_DECREF(rrs);
-			return NULL;
-		}
-		PyTuple_SET_ITEM(rrs, i, a);
-	}
-	o = Py_BuildValue("isiO", (int) answer->status, answer->cname,
-			  answer->expires, rrs);
-	Py_DECREF(rrs);
-	return o ;
-}
-
-static char adns_exception__doc__[] = \
-"exception(s)\n\
-\n\
-Checks the status code of an answer and raises an exception if necessary.\n";
-
-static PyObject*
-adns_exception(
-	PyObject *self,
-	PyObject *args
-	)
-{
-	PyObject *e, *m;
-	adns_status status;
-	if (!PyArg_ParseTuple(args, "i", &status))
-		return NULL;
-	switch (status) {
-	case adns_s_ok:
-		Py_INCREF(Py_None);
-		return Py_None;
-	case adns_s_nomemory:
-		return PyErr_NoMemory();
-	case adns_s_unknownrrtype:
-	case adns_s_systemfail:
-		e = LocalError;
-		break;
-	case adns_s_timeout:
-	case adns_s_allservfail:
-	case adns_s_norecurse:
-	case adns_s_invalidresponse:
-	case adns_s_unknownformat:
-		e = RemoteFailureError;
-		break;
-	case adns_s_rcodeservfail:
-	case adns_s_rcodeformaterror:
-	case adns_s_rcodenotimplemented:
-	case adns_s_rcoderefused:
-	case adns_s_rcodeunknown:
-		e = RemoteTempError;
-		break;
-	case adns_s_inconsistent:
-	case adns_s_prohibitedcname:
-	case adns_s_answerdomaininvalid:
-	case adns_s_invaliddata:
-		e = RemoteConfigError;
-	case adns_s_querydomainwrong:
-	case adns_s_querydomaininvalid:
-	case adns_s_querydomaintoolong:
-		e = QueryError;
-		break;
-	case adns_s_nxdomain:
-		e = NXDomainError;
-		break;
-	case adns_s_nodata:
-		e = NoDataError;
-		break;
-	default:
-		e = ErrorObject;
-	}
-	if (!(m=Py_BuildValue("is", status,
-				 adns_strerror((adns_status) status))))
-		return NULL;
-	PyErr_SetObject(e, m);
-	Py_DECREF(m);
-	return NULL;
-}
-
-/* ---------------------------------------------------------------- */
-
-static char ADNS_State_synchronous__doc__[] = 
-"s.synchronous(name,type[,flags]\n\
-\n\
-Perform a query on name synchronously for RR type, returning the answer.\n\
-Answers returned as (status, cname, expires, rrs).\n\
-rrs is an n-tuple, each element is a RR. Format varies by\n\
-RR and query.\n"
-;
-
-static PyObject *
-ADNS_State_synchronous(
-	ADNS_Stateobject *self,
-	PyObject *args
-	)
-{
-	char *owner;
-	adns_rrtype type = 0;
-	adns_queryflags flags = 0;
-	adns_answer *answer_r;
-	int r;
-	PyObject *o;
-	if (!PyArg_ParseTuple(args, "si|i", &owner, &type, &flags))
-		return NULL;
-	Py_BEGIN_ALLOW_THREADS;
-	r = adns_synchronous(self->state, owner, type, flags, &answer_r);
-	Py_END_ALLOW_THREADS;
-	if (r) {
-		PyErr_SetString(ErrorObject, strerror(r));
-		return NULL;
-	}
-	o = interpret_answer(answer_r);
-	free(answer_r);
-	return o;
-}
-
-
-static char ADNS_State_submit__doc__[] = 
-"s.submit(name,type[,flags])\n\
-\n\
-Submit a query. Returns a ADNS_Query object.\n"
-;
-
-static ADNS_Queryobject *newADNS_Queryobject(ADNS_Stateobject *state);
-
-static PyObject *
-ADNS_State_submit(
-	ADNS_Stateobject *self,
-	PyObject *args
-	)
-{
-	char *owner;
-	adns_rrtype type = 0;
-	adns_queryflags flags = 0;
-	int r;
-	ADNS_Queryobject *o;
-	if (!PyArg_ParseTuple(args, "si|i", &owner, &type, &flags))
-		return NULL;
-	o = newADNS_Queryobject(self);
-	Py_BEGIN_ALLOW_THREADS;
-	r = adns_submit(self->state, owner, type, flags, o, &o->query);
-	Py_END_ALLOW_THREADS;
-	if (r) {
-		PyErr_SetString(ErrorObject, strerror(r));
-		return NULL;
-	}
-	return (PyObject *) o;
-}
-
-
-static char ADNS_State_submit_reverse__doc__[] = 
-"s.submit_reverse(name,type[,flags])\n\
-\n\
-Submit a query. Returns a ADNS_Query object.\n\
-flags must specify some kind of PTR query."
-;
-
-
-static PyObject *
-ADNS_State_submit_reverse(
-	ADNS_Stateobject *self,
-	PyObject *args
-	)
-{
-	char *owner;
-	struct sockaddr_in addr;
-	adns_rrtype type = 0;
-	adns_queryflags flags = 0;
-	int r;
-	ADNS_Queryobject *o;
-	if (!PyArg_ParseTuple(args, "si|i", &owner, &type, &flags))
-		return NULL;
-        r = inet_aton(owner, (struct in_addr *) &(addr.sin_addr));
-        if (!r) {
-                PyErr_SetString(ErrorObject, "invalid IP address");
-                return NULL;
-        }
-	addr.sin_family = AF_INET;
-	o = newADNS_Queryobject(self);
-	Py_BEGIN_ALLOW_THREADS;
-	r = adns_submit_reverse(self->state, (struct sockaddr *)&addr, type, flags, o, &o->query);
-	Py_END_ALLOW_THREADS;
-	if (r) {
-		PyErr_SetString(ErrorObject, strerror(r));
-		return NULL;
-	}
-	return (PyObject *) o;
-}
-
-static char ADNS_State_submit_reverse_any__doc__[] = 
-"s.submit_reverse_any(name,zone,type[,flags])\n\
-\n\
-Submit a query. Returns a ADNS_Query object.\n\
-zone is in-addr.arpa., etc.\n\
-flags must specify some kind of PTR query."
-;
-
-
-static PyObject *
-ADNS_State_submit_reverse_any(
-	ADNS_Stateobject *self,
-	PyObject *args
-	)
-{
-	char *owner, *zone;
-	struct sockaddr_in addr;
-	adns_rrtype type = 0;
-	adns_queryflags flags = 0;
-	int r;
-	ADNS_Queryobject *o;
-	if (!PyArg_ParseTuple(args, "ssi|i", &owner, &zone, &type, &flags))
-		return NULL;
-        r = inet_aton(owner, &(addr.sin_addr));
-        if (!r) {
-                PyErr_SetString(ErrorObject, "invalid IP address");
-                return NULL;
-        }
-	addr.sin_family = AF_INET;
-	o = newADNS_Queryobject(self);
-	Py_BEGIN_ALLOW_THREADS;
-	r = adns_submit_reverse_any(self->state, (struct sockaddr *)&addr, zone, type, flags, o, &o->query);
-	Py_END_ALLOW_THREADS;
-	if (r) {
-		PyErr_SetString(ErrorObject, strerror(r));
-		return NULL;
-	}
-	return (PyObject *) o;
-}
-
-
-static char ADNS_State_allqueries__doc__[] = 
-"s.allqueries()\n\
-\n\
-Returns a list of all pending queries.\n"
-;
-
-
-static PyObject *
-ADNS_State_allqueries(
-	ADNS_Stateobject *self,
-	PyObject *args
-	)
-{
-	ADNS_Queryobject *o;
-	adns_query q;
-	PyObject *l;
-
-	if (!PyArg_ParseTuple(args, ""))
-		return NULL;
-	if (!(l = PyList_New(0))) return NULL;
-	for (adns_forallqueries_begin(self->state);
-	     (q = adns_forallqueries_next(self->state, (void *)&o));
-		) {
-		if (PyList_Append(l, (PyObject *) o)) {
-			Py_DECREF(l);
-			return NULL;
-		}
-	}
-	return l;
-}
-
-
-
-static char ADNS_State_select__doc__[] = 
-"s.select(timeout=0)\n\
-\n\
-Like the select() system call, except it works only on\n\
-pending queries, i.e. internally it does:\n\
-1) adns_beforeselect\n\
-2) select\n\
-3) adns_afterselect\n"
-;
-
-
-static PyObject *
-ADNS_State_select(
-	ADNS_Stateobject *self,
-	PyObject *args
-	)
-{
-	fd_set rfds, wfds, efds;
-	int r, maxfd=0;
-	double ft = 0;
-	struct timeval **tv_mod, tv_buf, now, timeout;
-	struct timezone tz;
-
-	if (!PyArg_ParseTuple(args, "|d", &ft))
-		return NULL;
-	timeout.tv_sec = (int) ft;
-	timeout.tv_usec = (int) ((ft - timeout.tv_sec) * 1e6);
-	tv_mod = NULL;
-	if (gettimeofday(&now, &tz))
-		return PyErr_SetFromErrno(ErrorObject);
-	FD_ZERO(&rfds);
-	FD_ZERO(&wfds);
-	FD_ZERO(&efds);
-	adns_beforeselect(self->state, &maxfd, &rfds, &wfds, &efds,
-			  tv_mod, &tv_buf, &now);
-	Py_BEGIN_ALLOW_THREADS;
-	r = select(maxfd, &rfds, &wfds, &efds, &timeout);
-	Py_END_ALLOW_THREADS;
-	if (r == -1) return PyErr_SetFromErrno(ErrorObject);
-	if (gettimeofday(&now, &tz))
-		return PyErr_SetFromErrno(ErrorObject);
-	adns_afterselect(self->state, maxfd, &rfds, &wfds, &efds, &now);
-	Py_INCREF(Py_None);
-	return Py_None;
-}
-
-
-static char ADNS_State_completed__doc__[] = 
-"s.allqueries()\n\
-\n\
-Returns a list of all completed queries.\n"
-;
-
-
-static PyObject *
-ADNS_State_completed(
-	ADNS_Stateobject *self,
-	PyObject *args
-	)
-{
-	adns_answer *answer_r;
-	int r;
-	ADNS_Queryobject *o, *o2;
-	adns_query q;
-	PyObject *l;
-
-	if (!(l = ADNS_State_select(self, args))) return NULL;
-	Py_DECREF(l);
-	if (!(l = PyList_New(0))) return NULL;
-	for (adns_forallqueries_begin(self->state);
-	     (q = adns_forallqueries_next(self->state, (void *)&o));
-		) {
-		r = adns_check(self->state, &q, &answer_r, (void *) &o2);
-		if (r) {
-			if (r == EWOULDBLOCK)
-				continue;
-			else {
-				PyErr_SetString(ErrorObject, strerror(r));
-				PyErr_Fetch(&(o->exc_type),
-					    &(o->exc_value),
-					    &(o->exc_traceback));
-				continue;
-			}
-		}
-		assert(o == o2);
-		o->answer = interpret_answer(answer_r);
-		free(answer_r);
-		o->query = NULL;
-		if (PyList_Append(l, (PyObject *) o)) {
-			Py_DECREF(l);
-			return NULL;
-		}
-	}
-	return l;
-}
-
-
-
-static char ADNS_State_globalsystemfailure__doc__[] = 
-""
-;
-
-static PyObject *
-ADNS_State_globalsystemfailure(
-	ADNS_Stateobject *self,
-	PyObject *args
-	)
-{
-	if (!PyArg_ParseTuple(args, ""))
-		return NULL;
-	adns_globalsystemfailure(self->state);
-	Py_INCREF(Py_None);
-	return Py_None;
-}
-
-
-static struct PyMethodDef ADNS_State_methods[] = {
-	{"synchronous",	(PyCFunction)ADNS_State_synchronous,	METH_VARARGS,	ADNS_State_synchronous__doc__},
- {"submit",	(PyCFunction)ADNS_State_submit,	METH_VARARGS,	ADNS_State_submit__doc__},
- {"submit_reverse",	(PyCFunction)ADNS_State_submit_reverse,	METH_VARARGS,	ADNS_State_submit_reverse__doc__},
- {"submit_reverse_any",	(PyCFunction)ADNS_State_submit_reverse_any,	METH_VARARGS,	ADNS_State_submit_reverse_any__doc__},
- {"allqueries",	(PyCFunction)ADNS_State_allqueries,	METH_VARARGS,	ADNS_State_allqueries__doc__},
- {"completed",	(PyCFunction)ADNS_State_completed,	METH_VARARGS,	ADNS_State_completed__doc__},
- {"select",	(PyCFunction)ADNS_State_select,	METH_VARARGS,	ADNS_State_select__doc__},
- {"globalsystemfailure",	(PyCFunction)ADNS_State_globalsystemfailure,	METH_VARARGS,	ADNS_State_globalsystemfailure__doc__},
- 
-	{NULL,		NULL}		/* sentinel */
-};
-
-/* ---------- */
-
-
-static PyObject *
-ADNS_State_getattr(
-	ADNS_Stateobject *self,
-	char *name
-	)
-{
-	/* XXXX Add your own getattr code here */
-	return Py_FindMethod(ADNS_State_methods, (PyObject *)self, name);
-}
-
-static ADNS_Stateobject *
-newADNS_Stateobject(void)
-{
-	ADNS_Stateobject *self;
-	
-	self = PyObject_New(ADNS_Stateobject, &ADNS_Statetype);
-	if (self == NULL)
-		return NULL;
-	self->state = NULL;
-	return self;
-}
-
-
-static void
-ADNS_State_dealloc(ADNS_Stateobject *self)
-{
-	Py_BEGIN_ALLOW_THREADS;
-	adns_finish(self->state);
-	Py_END_ALLOW_THREADS;
-	Py_INCREF(Py_None);
-	PyObject_Del(self);
-}
-
-static char ADNS_Statetype__doc__[] = 
-"Contains state information for adns session."
-;
-
-static PyTypeObject ADNS_Statetype = {
-	PyObject_HEAD_INIT(&PyType_Type)
-	0,				/*ob_size*/
-	"ADNS_State",			/*tp_name*/
-	sizeof(ADNS_Stateobject),		/*tp_basicsize*/
-	0,				/*tp_itemsize*/
-	/* methods */
-	(destructor)ADNS_State_dealloc,	/*tp_dealloc*/
-	(printfunc)0,		/*tp_print*/
-	(getattrfunc)ADNS_State_getattr,	/*tp_getattr*/
-	(setattrfunc)0,	/*tp_setattr*/
-	(cmpfunc)0,		/*tp_compare*/
-	(reprfunc)0,		/*tp_repr*/
-	0,			/*tp_as_number*/
-	0,		/*tp_as_sequence*/
-	0,		/*tp_as_mapping*/
-	(hashfunc)0,		/*tp_hash*/
-	(ternaryfunc)0,		/*tp_call*/
-	(reprfunc)0,		/*tp_str*/
-
-	/* Space for future expansion */
-	0L,0L,0L,0L,
-	ADNS_Statetype__doc__ /* Documentation string */
-};
-
-/* End of code for ADNS_State objects */
-/* -------------------------------------------------------- */
-
-
-static char ADNS_Query_check__doc__[] = 
-"answer = q.check()\n\
-\n\
-Check for an answer. Return value same as for\n\
-s.synchronous.\n"
-;
-
-static PyObject *
-ADNS_Query_check(
-	ADNS_Queryobject *self,
-	PyObject *args
-	)
-{
-	adns_answer *answer_r;
-	int r;
-	PyObject *o2=(PyObject *)self;
-
-	if (!PyArg_ParseTuple(args, ""))
-		return NULL;
-	if (self->exc_type) {
-		PyErr_Restore(self->exc_type, self->exc_value, self->exc_traceback);
-		self->exc_type = self->exc_value = self->exc_traceback = NULL;
-		return NULL;
-	}
-	if (self->answer) goto ret_answer;
-	if (!(self->query)) {
-		PyErr_SetString(ErrorObject, "query invalidated");
-		return NULL;
-	}
-	r = adns_check(self->s->state, &self->query, &answer_r, (void *) &o2);
-	if (r) {
-		if (r == EWOULDBLOCK)
-			PyErr_SetString(NotReadyError, strerror(r));
-		else {
-			PyErr_SetString(ErrorObject, strerror(r));
-			self->query = NULL;
-		}
-		return NULL;
-	}
-	assert(o2 == (PyObject *) self);
-	self->answer = interpret_answer(answer_r);
-	self->query = NULL;
-	free(answer_r);
-  ret_answer:
-	Py_INCREF(self->answer);
-	return self->answer;
-}
-
-
-static char ADNS_Query_wait__doc__[] = 
-"answer=q.wait()\n\
-\n\
-Wait for an answer. Return value same as for\n\
-s.synchronous.\n"
-;
-
-static PyObject *
-ADNS_Query_wait(
-	ADNS_Queryobject *self,
-	PyObject *args
-	)
-{
-	adns_answer *answer_r;
-	int r;
-	PyObject *o2=(PyObject *)self;
-
-	if (!PyArg_ParseTuple(args, ""))
-		return NULL;
-	if (self->exc_type) {
-		PyErr_Restore(self->exc_type, self->exc_value, self->exc_traceback);
-		self->exc_type = self->exc_value = self->exc_traceback = NULL;
-		return NULL;
-	}
-	if (self->answer) goto ret_answer;
-	if (!(self->query)) {
-		PyErr_SetString(ErrorObject, "query invalidated");
-		return NULL;
-	}
-	Py_BEGIN_ALLOW_THREADS;
-	r = adns_wait(self->s->state, &self->query, &answer_r, (void *) &o2);
-	Py_END_ALLOW_THREADS;
-	if (r) {
-		if (r == EWOULDBLOCK)
-			PyErr_SetString(NotReadyError, strerror(r));
-		else {
-			PyErr_SetString(ErrorObject, strerror(r));
-			self->query = NULL;
-		}
-		return NULL;
-	}
-	assert(o2 == (PyObject *) self);
-	self->answer = interpret_answer(answer_r);
-	self->query = NULL;
-	free(answer_r);
-  ret_answer:
-	Py_INCREF(self->answer);
-	return self->answer;
-}
-
-
-static char ADNS_Query_cancel__doc__[] = 
-"q.cancel()\n\
-\n\
-Cancel a pending query.\n"
-;
-
-static PyObject *
-ADNS_Query_cancel(
-	ADNS_Queryobject *self,
-	PyObject *args
-	)
-{
-	if (!PyArg_ParseTuple(args, ""))
-		return NULL;
-	if (!(self->query)) {
-		PyErr_SetString(ErrorObject, "query invalidated");
-		return NULL;
-	}
-	Py_BEGIN_ALLOW_THREADS;
-	adns_cancel(self->query);
-	Py_END_ALLOW_THREADS;
-	Py_INCREF(Py_None);
-	self->query = NULL;
-	return Py_None;
-}
-
-
-static struct PyMethodDef ADNS_Query_methods[] = {
-	{"check",	(PyCFunction)ADNS_Query_check,	METH_VARARGS,	ADNS_Query_check__doc__},
- {"wait",	(PyCFunction)ADNS_Query_wait,	METH_VARARGS,	ADNS_Query_wait__doc__},
- {"cancel",	(PyCFunction)ADNS_Query_cancel,	METH_VARARGS,	ADNS_Query_cancel__doc__},
- 
-	{NULL,		NULL}		/* sentinel */
-};
-
-/* ---------- */
-
-
-static PyObject *
-ADNS_Query_getattr(
-	ADNS_Queryobject *self,
-	char *name
-	)
-{
-	/* XXXX Add your own getattr code here */
-	return Py_FindMethod(ADNS_Query_methods, (PyObject *)self, name);
-}
-
-static ADNS_Queryobject *
-newADNS_Queryobject(ADNS_Stateobject *state)
-{
-	ADNS_Queryobject *self;
-	
-	self = PyObject_New(ADNS_Queryobject, &ADNS_Querytype);
-	if (self == NULL)
-		return NULL;
-	Py_INCREF(state);
-	self->s = state;
-	self->query = NULL;
-	self->answer = NULL;
-	self->exc_type = NULL;
-	self->exc_value = NULL;
-	self->exc_traceback = NULL;
-	return self;
-}
-
-
-static void
-ADNS_Query_dealloc(ADNS_Queryobject *self)
-{
-	Py_DECREF(self->s);
-	Py_XDECREF(self->answer);
-	Py_XDECREF(self->exc_type);
-	Py_XDECREF(self->exc_value);
-	Py_XDECREF(self->exc_traceback);
-	PyObject_Del(self);
-}
-
-static char ADNS_Querytype__doc__[] = 
-"A query currently being processed by adns."
-;
-
-static PyTypeObject ADNS_Querytype = {
-	PyObject_HEAD_INIT(&PyType_Type)
-	0,				/*ob_size*/
-	"ADNS_Query",			/*tp_name*/
-	sizeof(ADNS_Queryobject),		/*tp_basicsize*/
-	0,				/*tp_itemsize*/
-	/* methods */
-	(destructor)ADNS_Query_dealloc,	/*tp_dealloc*/
-	(printfunc)0,		/*tp_print*/
-	(getattrfunc)ADNS_Query_getattr,	/*tp_getattr*/
-	(setattrfunc)0,	/*tp_setattr*/
-	(cmpfunc)0,		/*tp_compare*/
-	(reprfunc)0,		/*tp_repr*/
-	0,			/*tp_as_number*/
-	0,		/*tp_as_sequence*/
-	0,		/*tp_as_mapping*/
-	(hashfunc)0,		/*tp_hash*/
-	(ternaryfunc)0,		/*tp_call*/
-	(reprfunc)0,		/*tp_str*/
-
-	/* Space for future expansion */
-	0L,0L,0L,0L,
-	ADNS_Querytype__doc__ /* Documentation string */
-};
-
-/* End of code for ADNS_Query objects */
-/* -------------------------------------------------------- */
-
-
-static char adns_init__doc__[] =
-"s=adns.init([initflags,debugfileobj=stderr,configtext=''])\n\
-\n\
-Initialize an ADNS_State object, which contains state information\n\
-used internally by adns."
-;
-
-int
-_file_converter(
-	PyObject *obj,
-	FILE **f
-	)
-{
-	*f = PyFile_AsFile(obj);
-	return (*f != NULL);
-}
-
-static PyObject *
-adns__init(
-	PyObject *self,	/* Not used */
-	PyObject *args
-	)
-{
-	adns_initflags flags = 0;
-	int status;
-	FILE *diagfile = NULL;
-	char *configtext = NULL;
-	ADNS_Stateobject *s;
-
-	if (!PyArg_ParseTuple(args, "|iO&s",
-			      &flags, _file_converter, &diagfile, &configtext))
-		return NULL;
-	if (!(s = newADNS_Stateobject())) return NULL;
-	if (configtext)
-		status = adns_init_strcfg(&s->state, flags,
-					  diagfile, configtext);
-	else
-		status = adns_init(&s->state, flags, diagfile);
-	if (status) {
-		PyErr_SetFromErrno(ErrorObject);
-		ADNS_State_dealloc(s);
-		return NULL;
-	}
-	return (PyObject *) s;
-}
-
-/* List of methods defined in the module */
-
-static struct PyMethodDef adns_methods[] = {
-	{"init",	(PyCFunction)adns__init,	METH_VARARGS,	adns_init__doc__},
-	{"exception",(PyCFunction)adns_exception, METH_VARARGS, adns_exception__doc__},
- 
-	{NULL,	 (PyCFunction)NULL, 0, NULL}		/* sentinel */
-};
-
-
-/* Initialization function for the module (*must* be called initadns) */
-
-static char adns_module_documentation[] = 
-""
-;
-
-static PyObject *
-_new_exception(
-	PyObject *dict,
-	char *name,
-	PyObject *base
-	)
-{
-	PyObject *v;
-	char longname[256];
-	
-	sprintf(longname, "adns.%s", name);
-	if ((v = PyErr_NewException(longname, base, NULL)) == NULL)
-		return NULL;
-	if (PyDict_SetItemString(dict, name, v)) return NULL;
-	return v;
-}
-
-static int
-_new_constant_class(
-	PyObject *mdict,
-	char *type,
-	_constant_class *table
-	)
-{
-	PyObject *d, *c, *v;
-	int i;
-	/* XXX This leaks memory if it fails, but then the whole module
-	   fails to import, so probably no big deal */
-	if (!(d = PyDict_New())) goto error;
-	for (i = 0; table[i].name; i++) {
-		if (!(v = PyInt_FromLong((long)table[i].value))) goto error;
-		if (PyDict_SetItemString(d, table[i].name, v)) goto error;
-	}
-	if (!(c = PyClass_New(NULL,d,PyString_InternFromString(type)))) goto error;
-	if (PyDict_SetItemString(mdict, type, c)) goto error;
-	return 0;
-  error:
-	Py_XDECREF(d);
-	return -1;
-}
-
-void
-initadns(void)
-{
-	PyObject *m, *d;
-
-	/* Create the module and add the functions */
-	m = Py_InitModule4("adns", adns_methods,
-		adns_module_documentation,
-		(PyObject*)NULL,PYTHON_API_VERSION);
-
-	/* Add some symbolic constants to the module */
-	d = PyModule_GetDict(m);
-	ErrorObject = _new_exception(d, "Error", PyExc_StandardError);
-	NotReadyError = _new_exception(d, "NotReady", ErrorObject);
-	LocalError = _new_exception(d, "LocalError", ErrorObject);
-	RemoteError = _new_exception(d, "RemoteError", ErrorObject);
-	RemoteFailureError = _new_exception(d, "RemoteFailureError", RemoteError);
-	RemoteTempError = _new_exception(d, "RemoteTempError", RemoteError);
-	RemoteConfigError = _new_exception(d, "RemoteConfigError", RemoteError);
-	QueryError = _new_exception(d, "QueryError", ErrorObject);
-	PermanentError = _new_exception(d, "PermanentError", ErrorObject);
-	NXDomainError = _new_exception(d, "NXDomain", PermanentError);
-	NoDataError = _new_exception(d, "NoData", PermanentError);
-
-	/* XXXX Add constants here */
-	_new_constant_class(d, "iflags", adns_iflags);
-	_new_constant_class(d, "qflags", adns_qflags);
-	_new_constant_class(d, "rr", adns_rr);
-	_new_constant_class(d, "status", adns_s);
-	/* Check for errors */
-	if (PyErr_Occurred())
-		Py_FatalError("can't initialize module adns");
-}
-
-

Added: packages/python-adns/trunk/debian/README.source
===================================================================
--- packages/python-adns/trunk/debian/README.source	                        (rev 0)
+++ packages/python-adns/trunk/debian/README.source	2009-11-04 23:23:34 UTC (rev 10289)
@@ -0,0 +1,6 @@
+This package uses quilt to handle patches against upstream source
+code; you can find information about how to use quilt at
+
+    /usr/share/doc/quilt/
+
+ -- Jan Dittberner <jandd at debian.org>, Thu,  5 Nov 2009 00:05:08 +0100

Modified: packages/python-adns/trunk/debian/changelog
===================================================================
--- packages/python-adns/trunk/debian/changelog	2009-11-04 22:43:01 UTC (rev 10288)
+++ packages/python-adns/trunk/debian/changelog	2009-11-04 23:23:34 UTC (rev 10289)
@@ -9,6 +9,13 @@
     - add XS-Python-Version
     - add Homepage
     - add Vcs-* fields
+    - add quilt to Build-Depends
+  * remove direct modifications to orig tarball
+  * add debian/README.source with quilt instructions
+  * add debian/patches/01remove_shebang.patch instead of overwriting
+    upstream ADNS.py
+  * debian/rules:
+    - add quilt macros to patch and unpatch
 
  -- Jan Dittberner <jandd at debian.org>  Wed, 04 Nov 2009 23:34:37 +0100
 

Modified: packages/python-adns/trunk/debian/control
===================================================================
--- packages/python-adns/trunk/debian/control	2009-11-04 22:43:01 UTC (rev 10288)
+++ packages/python-adns/trunk/debian/control	2009-11-04 23:23:34 UTC (rev 10289)
@@ -3,7 +3,8 @@
 Priority: optional
 Maintainer: Debian Python Modules Team <python-modules-team at lists.alioth.debian.org>
 Uploaders: Jan Dittberner <jandd at debian.org>
-Build-Depends: debhelper (>= 5.0.37.2), python-all-dev (>= 2.3.5-11), python-support (>= 0.3.2), libadns1-dev
+Build-Depends: debhelper (>= 5.0.37.2), python-all-dev (>= 2.3.5-11),
+ python-support (>= 0.3.2), libadns1-dev, quilt
 Standards-Version: 3.7.2
 XS-Python-Version: >= 2.3
 Homepage: http://code.google.com/p/adns-python/

Added: packages/python-adns/trunk/debian/patches/01remove_shebang.patch
===================================================================
--- packages/python-adns/trunk/debian/patches/01remove_shebang.patch	                        (rev 0)
+++ packages/python-adns/trunk/debian/patches/01remove_shebang.patch	2009-11-04 23:23:34 UTC (rev 10289)
@@ -0,0 +1,9 @@
+remove shebang line from non executable ADNS.py
+--- a/ADNS.py
++++ b/ADNS.py
+@@ -1,5 +1,3 @@
+-#!/usr/bin/python
+-
+ """High-level interface to adns."""
+ 
+ import adns

Added: packages/python-adns/trunk/debian/patches/series
===================================================================
--- packages/python-adns/trunk/debian/patches/series	                        (rev 0)
+++ packages/python-adns/trunk/debian/patches/series	2009-11-04 23:23:34 UTC (rev 10289)
@@ -0,0 +1 @@
+01remove_shebang.patch

Modified: packages/python-adns/trunk/debian/rules
===================================================================
--- packages/python-adns/trunk/debian/rules	2009-11-04 22:43:01 UTC (rev 10288)
+++ packages/python-adns/trunk/debian/rules	2009-11-04 23:23:34 UTC (rev 10289)
@@ -6,6 +6,7 @@
 #export DH_VERBOSE=1
 
 # This is the debhelper compatibility version to use.
+include /usr/share/quilt/quilt.make
 export DH_COMPAT=5
 
 ifneq (,$(findstring debug,$(DEB_BUILD_OPTIONS)))
@@ -14,7 +15,7 @@
 
 PYVERS=$(shell pyversions -r)
 
-build: build-stamp
+build: build-stamp patch
 build-stamp: 
 	dh_testdir
 	set -e; \
@@ -23,7 +24,7 @@
 	done
 	touch build-stamp
 
-clean:
+clean: unpatch
 	dh_testdir
 	dh_testroot
 




More information about the Python-modules-commits mailing list