Changeset 4035 for neercs


Ignore:
Timestamp:
Nov 25, 2009, 1:17:13 PM (10 years ago)
Author:
Jean-Yves Lamoureux
Message:
  • Added 'neercs' python module, with dummy 'version' method
Location:
neercs/trunk/src
Files:
2 added
2 edited

Legend:

Unmodified
Added
Removed
  • neercs/trunk/src/Makefile.am

    r4033 r4035  
    55                 term.c grab.c effects.c wm.c screensaver.c attach.c \
    66                 configuration.c mytrace.c mytrace.h input.c lock.c server.c \
    7                  client.c screen_list.c help.c interpreter.c            
     7                 client.c screen_list.c help.c interpreter.c py_module.c         
    88neercs_CFLAGS = @CACA_CFLAGS@ @PYTHON3_CFLAGS@
    99neercs_LDADD = @CACA_LIBS@ @UTIL_LIBS@ @PAM_LIBS@ @PYTHON3_LIBS@
  • neercs/trunk/src/interpreter.c

    r4034 r4035  
    44 *                All Rights Reserved
    55 *
    6  *  $Id: help.c 3996 2009-11-22 12:41:45Z jylam $
     6 *  $Id: interpreter.c 3996 2009-11-22 12:41:45Z jylam $
    77 *
    88 *  This program is free software. It comes without any warranty, to
     
    2929#include <sys/socket.h>
    3030#include <sys/time.h>
    31 
    32 #include <caca.h>
    33 #include <caca.h>
    3431#include <time.h>
    3532#include <sys/wait.h>
    3633#include <sys/types.h>
    3734
     35#include <caca.h>
     36
    3837#include "neercs.h"
     38#include "py_module.h"
    3939
    4040static void add_char(struct screen_list *sl, unsigned int c);
     
    175175    sl->interpreter_props.output = NULL;
    176176    Py_Initialize();
     177   
     178    PyInit_neercs();
     179   
    177180    return 0;
    178181}
     
    198201    if (sl->interpreter_props.output)
    199202    {
    200         free(sl->interpreter_props.output);
     203        // FIXME free(sl->interpreter_props.output);
    201204        sl->interpreter_props.output = NULL;
    202205    }
    203206
    204     PyObject *pModule, *pName, *pFunc;
     207    PyObject *pModule, *pName, *pFunc, *pValue;
    205208
    206209    /* Module from which to call the function */
     
    222225        if (pFunc && PyCallable_Check(pFunc))
    223226        {
    224             debug("py Can call !\n");
     227            pValue = PyObject_CallObject(pFunc, NULL);
     228            if (pValue != NULL) {
     229                char *res = getStringFromPyObject(pValue);
     230                sl->interpreter_props.output = res;
     231                debug("py Result of call: %s\n", res);
     232                Py_DECREF(pValue);
     233            }
     234            else {
     235                Py_DECREF(pFunc);
     236                Py_DECREF(pModule);
     237                sl->interpreter_props.output = getPythonError();
     238                err = 1;
     239                debug("py Call failed\n");
     240                goto end;
     241                return 1;
     242            }
    225243        }
    226244        else
     
    241259
    242260  end:
     261   
     262    Py_XDECREF(pFunc);
     263    Py_DECREF(pModule);
     264   
    243265    if (!err)
    244266    {
Note: See TracChangeset for help on using the changeset viewer.