X-Git-Url: http://git.asbjorn.biz/?a=blobdiff_plain;f=lib%2Fpython%2Fpyutils.c;fp=lib%2Fpython%2Fpyutils.c;h=2fdc0e1701cbbd9bb0b491647186440e6c70c863;hb=49062bcde61a1622b6e5605097beff11916cd07e;hp=0000000000000000000000000000000000000000;hpb=e2c2e5e8d8216974b367f983f4fd5b1aa94eb54b;p=swftools.git diff --git a/lib/python/pyutils.c b/lib/python/pyutils.c new file mode 100644 index 0000000..2fdc0e1 --- /dev/null +++ b/lib/python/pyutils.c @@ -0,0 +1,66 @@ +#include +#include +#include +#include +#include + +char* setError(char*format, ...) +{ + char buf[1024]; + int l; + va_list arglist; + va_start(arglist, format); + vsprintf(buf, format, arglist); + va_end(arglist); + l = strlen(buf); + while(l && buf[l-1]=='\n') { + buf[l-1] = 0; + l--; + } + return strdup(buf); +} + +static int verbose = 1; +void mylog(char*format, ...) +{ + char buf[1024]; + int l; + va_list arglist; + if(!verbose) + return; + va_start(arglist, format); + vsprintf(buf, format, arglist); + va_end(arglist); + l = strlen(buf); + while(l && buf[l-1]=='\n') { + buf[l-1] = 0; + l--; + } + fprintf(stderr, "[SWF] %s\n", buf); + fflush(stderr); +} + +#define PY_NONE Py_BuildValue("s", 0) + +PyObject* FindMethodMore(PyObject*ret, PyMethodDef f[], PyObject*self, char* a) +{ + if(ret==NULL) { + ret = Py_FindMethod(f, self, a); + } else { + if(!strcmp(a, "__methods__")) { + /* we are being dir()ed. Complete the function table */ + PyObject* add = Py_FindMethod(f, self, a); + int t; + mylog("taglist_getattr: append common funtions %08x %08x\n", ret, add); + for(t=0;t