summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDetlev Casanova <detlev.casanova@gmail.com>2010-07-09 12:41:42 +0200
committerDetlev Casanova <detlev.casanova@gmail.com>2010-07-09 12:41:42 +0200
commit4e75e7f79601122313e83c4e8d22492492e970e2 (patch)
treef2878c129d93a147111a98478d83c38f46e135cb
parent97d75ee996220405a15f134924ac380262ec46f7 (diff)
downloadlayman-4e75e7f79601122313e83c4e8d22492492e970e2.tar.gz
layman-4e75e7f79601122313e83c4e8d22492492e970e2.tar.bz2
layman-4e75e7f79601122313e83c4e8d22492492e970e2.zip
Add some methods to Overlay, fix some warnings
-rw-r--r--src/interpreter.c4
-rw-r--r--src/overlay.c51
-rw-r--r--src/overlay.h6
-rw-r--r--src/tester.c4
4 files changed, 64 insertions, 1 deletions
diff --git a/src/interpreter.c b/src/interpreter.c
index e68f1a2..619a157 100644
--- a/src/interpreter.c
+++ b/src/interpreter.c
@@ -69,7 +69,9 @@ void freeList(PyObjectList *list, int deref)
PyObjectListElem *tmp = node;
node = node->next;
if (deref)
+ {
Py_DECREF(tmp->object);
+ }
free(tmp);
}
@@ -173,7 +175,9 @@ PyObject *executeFunction(const char *module, const char *funcName, const char*
PyObject *val = PyObject_CallObject(func, args);
if (args != NULL)
+ {
Py_DECREF(args);
+ }
return val;
}
diff --git a/src/overlay.c b/src/overlay.c
index 79fee08..74910f9 100644
--- a/src/overlay.c
+++ b/src/overlay.c
@@ -93,10 +93,61 @@ int overlayIsOfficial(Overlay *o)
return (int) PyLong_AsLong(iso);
}
+int overlayIsSupported(Overlay *o)
+{
+ if (!o || !o->object)
+ return -1;
+
+ PyObject *iss = PyObject_CallMethod(o->object, "is_supported", NULL);
+
+ //TODO:Py_DECREF me !
+
+ return (int) PyLong_AsLong(iss);
+}
+
+const char *overlayShortList(Overlay *o)
+{
+ if (!o || !o->object)
+ return NULL;
+
+ PyObject *sl = PyObject_CallMethod(o->object, "short_list", NULL);
+
+ //TODO:Py_DECREF me !
+
+ return PyBytes_AsString(sl);
+}
+
+const char *overlayStr(Overlay *o)
+{
+ if (!o || !o->object)
+ return NULL;
+
+ PyObject *str = PyObject_CallMethod(o->object, "str", NULL);
+
+ //TODO:Py_DECREF me !
+
+ return PyBytes_AsString(str);
+}
+
+const char *overlayToXml(Overlay *o)
+{
+ if (!o || !o->object)
+ return NULL;
+
+ PyObject *element = PyObject_CallMethod(o->object, "to_xml", NULL);
+ PyObject *str = executeFunction("xml.etree.ElementTree", "tostring", "(O)", element);
+
+ Py_DECREF(element);
+
+ return PyBytes_AsString(str);
+}
+
void overlayFree(Overlay *o)
{
if (o && o->object)
+ {
Py_DECREF(o->object);
+ }
if (o)
free(o);
}
diff --git a/src/overlay.h b/src/overlay.h
index 9125de0..2f64bde 100644
--- a/src/overlay.h
+++ b/src/overlay.h
@@ -6,9 +6,13 @@ typedef struct Overlay Overlay;
Overlay* createOverlay(const char*, const char*, int, int);
const char* overlayName(Overlay*);
const char* overlayOwnerEmail(Overlay*);
-int overlayPriority(Overlay*);
const char* overlayDescription(Overlay*);
+const char* overlayShortList(Overlay *o);
+const char* overlayStr(Overlay *o);
+const char* overlayToXml(Overlay *o);
+int overlayPriority(Overlay*);
int overlayIsOfficial(Overlay*);
+int overlayIsSupported(Overlay *o);
void overlayFree(Overlay*);
#endif
diff --git a/src/tester.c b/src/tester.c
index 53e4776..40be2ff 100644
--- a/src/tester.c
+++ b/src/tester.c
@@ -3,6 +3,8 @@
int main(int argc, char *argv[])
{
+ argc = argc;
+ argv = argv;
interpreterInit();
Overlay *o = createOverlay("<overlay type='svn' src='https://overlays.gentoo.org/svn/dev/wrobel' contact='nobody@gentoo.org' name='wrobel' status='official' priorit='10'><description>Test</description></overlay>", "", 1, 0);
@@ -15,6 +17,8 @@ int main(int argc, char *argv[])
printf("Overlay name = %s, owner email : %s, description : %s, priority : %d, it is %sofficial.\n", overlayName(o), overlayOwnerEmail(o), overlayDescription(o), overlayPriority(o), overlayIsOfficial(o) ? "" : "not ");
+ printf("xml is %s\n", overlayToXml(o));
+
interpreterFinalize();
return 0;