LCOV - code coverage report
Current view: top level - util - sss_python.c (source / functions) Hit Total Coverage
Test: coverage.info Lines: 10 10 100.0 %
Date: 2012-11-29 Functions: 5 5 100.0 %
Branches: 3 4 75.0 %

           Branch data     Line data    Source code
       1                 :            : /*
       2                 :            :     Authors:
       3                 :            :         Jakub Hrozek <jhrozek@redhat.com>
       4                 :            : 
       5                 :            :     Copyright (C) 2011 Red Hat
       6                 :            : 
       7                 :            :     This program is free software; you can redistribute it and/or modify
       8                 :            :     it under the terms of the GNU General Public License as published by
       9                 :            :     the Free Software Foundation; either version 3 of the License, or
      10                 :            :     (at your option) any later version.
      11                 :            : 
      12                 :            :     This program is distributed in the hope that it will be useful,
      13                 :            :     but WITHOUT ANY WARRANTY; without even the implied warranty of
      14                 :            :     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
      15                 :            :     GNU General Public License for more details.
      16                 :            : 
      17                 :            :     You should have received a copy of the GNU General Public License
      18                 :            :     along with this program.  If not, see <http://www.gnu.org/licenses/>.
      19                 :            : */
      20                 :            : 
      21                 :            : #include "src/util/sss_python.h"
      22                 :            : #include "config.h"
      23                 :            : 
      24                 :            : PyObject *
      25                 :         56 : sss_python_set_new(void)
      26                 :            : {
      27                 :            : #ifdef HAVE_PYSET_NEW
      28                 :         56 :     return PySet_New(NULL);
      29                 :            : #else
      30                 :            :     return PyObject_CallObject((PyObject *) &PySet_Type, NULL);
      31                 :            : #endif
      32                 :            : }
      33                 :            : 
      34                 :            : int
      35                 :         57 : sss_python_set_add(PyObject *set, PyObject *key)
      36                 :            : {
      37                 :            : #ifdef HAVE_PYSET_ADD
      38                 :         57 :     return PySet_Add(set, key);
      39                 :            : #else
      40                 :            :     PyObject *pyret;
      41                 :            :     int ret;
      42                 :            : 
      43                 :            :     pyret = PyObject_CallMethod(set, sss_py_const_p(char, "add"),
      44                 :            :                                 sss_py_const_p(char, "O"), key);
      45                 :            :     ret = (pyret == NULL) ? -1 : 0;
      46                 :            :     Py_XDECREF(pyret);
      47                 :            :     return ret;
      48                 :            : #endif
      49                 :            : }
      50                 :            : 
      51                 :            : bool
      52                 :          5 : sss_python_set_check(PyObject *set)
      53                 :            : {
      54                 :            : #if HAVE_DECL_PYSET_CHECK
      55 [ +  + ][ -  + ]:          5 :     return PySet_Check(set);
      56                 :            : #else
      57                 :            :     return PyObject_TypeCheck(set, &PySet_Type);
      58                 :            : #endif
      59                 :            : }
      60                 :            : 
      61                 :            : PyObject *
      62                 :         82 : sss_python_unicode_from_string(const char *u)
      63                 :            : {
      64                 :            : #ifdef HAVE_PYUNICODE_FROMSTRING
      65                 :            :     return PyUnicode_FromString(u);
      66                 :            : #else
      67                 :         82 :     return PyUnicode_DecodeUTF8(u, strlen(u), NULL);
      68                 :            : #endif
      69                 :            : }
      70                 :            : 
      71                 :            : PyObject *
      72                 :          1 : sss_exception_with_doc(char *name, char *doc, PyObject *base, PyObject *dict)
      73                 :            : {
      74                 :            : #ifdef HAVE_PYERR_NEWEXCEPTIONWITHDOC
      75                 :          1 :     return PyErr_NewExceptionWithDoc(name, doc, base, dict);
      76                 :            : #else
      77                 :            :     int result;
      78                 :            :     PyObject *ret = NULL;
      79                 :            :     PyObject *mydict = NULL; /* points to the dict only if we create it */
      80                 :            :     PyObject *docobj;
      81                 :            : 
      82                 :            :     if (dict == NULL) {
      83                 :            :         dict = mydict = PyDict_New();
      84                 :            :         if (dict == NULL) {
      85                 :            :             return NULL;
      86                 :            :         }
      87                 :            :     }
      88                 :            : 
      89                 :            :     if (doc != NULL) {
      90                 :            :         docobj = PyString_FromString(doc);
      91                 :            :         if (docobj == NULL)
      92                 :            :             goto failure;
      93                 :            :         result = PyDict_SetItemString(dict, "__doc__", docobj);
      94                 :            :         Py_DECREF(docobj);
      95                 :            :         if (result < 0)
      96                 :            :             goto failure;
      97                 :            :     }
      98                 :            : 
      99                 :            :     ret = PyErr_NewException(name, base, dict);
     100                 :            :   failure:
     101                 :            :     Py_XDECREF(mydict);
     102                 :            :     return ret;
     103                 :            : #endif
     104                 :            : }

Generated by: LCOV version 1.9