Cleaned up the Python module a bit.
[doldaconnect.git] / lib / python / dolmod.c
index 71623a6..c8df522 100644 (file)
@@ -1,6 +1,6 @@
 /*
  *  Dolda Connect - Modular multiuser Direct Connect-style client
- *  Copyright (C) 2004 Fredrik Tolf (fredrik@dolda2000.com)
+ *  Copyright (C) 2004 Fredrik Tolf <fredrik@dolda2000.com>
  *  
  *  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
@@ -90,6 +90,9 @@ static PyObject *resp_intresp(struct respobj *self)
            case 3:
                PyList_SetItem(sl, i, PyFloat_FromDouble(ires->argv[i].val.flnum));
                break;
+           case 4:
+               PyList_SetItem(sl, i, PyLong_FromLongLong(ires->argv[i].val.lnum));
+               break;
            }
        }
        dc_freeires(ires);
@@ -189,11 +192,11 @@ static PyObject *mod_select(PyObject *self, PyObject *args)
        return(NULL);
     }
     if(((pfd.revents & POLLIN) && dc_handleread()) || ((pfd.revents & POLLOUT) && dc_handlewrite())) {
-       if(errno == 0) {
-           fd = -1;
+       fd = -1;
+       if(errno == 0)
            Py_RETURN_FALSE;
-       }
        PyErr_SetFromErrno(PyExc_OSError);
+       return(NULL);
     }
     if(ret > 0)
        Py_RETURN_TRUE;
@@ -232,7 +235,7 @@ static int qcmd_cb(struct dc_response *resp)
 
 static PyObject *mod_qcmd(PyObject *self, PyObject *args, PyObject *kwargs)
 {
-    int i, tag;
+    int i;
     wchar_t **toks, *tok, *cmd;
     size_t tokssize, toksdata, toksize;
     PyObject *c, *n, *cb, *ret;
@@ -267,13 +270,13 @@ static PyObject *mod_qcmd(PyObject *self, PyObject *args, PyObject *kwargs)
     if(PyMapping_HasKeyString(kwargs, "cb")) {
        cb = PyMapping_GetItemString(kwargs, "cb");
        if(PyCallable_Check(cb)) {
-           ret = PyInt_FromLong(dc_queuecmd(qcmd_cb, cb, cmd, L"%%a", toks, NULL));
+           ret = PyInt_FromLong(dc_queuecmd(qcmd_cb, cb, cmd, L"%a", toks, NULL));
        } else {
            PyErr_SetString(PyExc_TypeError, "Callback must be callable");
            Py_DECREF(cb);
        }
     } else {
-       ret = PyInt_FromLong(dc_queuecmd(NULL, NULL, cmd, L"%%a", toks, NULL));
+       ret = PyInt_FromLong(dc_queuecmd(NULL, NULL, cmd, L"%a", toks, NULL));
     }
 
 out:
@@ -307,6 +310,9 @@ static void login_cb(int err, wchar_t *reason, PyObject *cb)
     case DC_LOGIN_ERR_AUTHFAIL:
        errstr = "authfail";
        break;
+    default:
+       errstr = "unknown";
+       break;
     }
     pyerr = PyString_FromString(errstr);
     if(reason == NULL)
@@ -402,7 +408,7 @@ static PyObject *mod_checkproto(PyObject *self, PyObject *args)
        PyErr_SetString(PyExc_TypeError, "first argument must be a response object");
        return(NULL);
     }
-    resp = tmp;
+    resp = (struct respobj *)tmp;
     if(dc_checkprotocol(resp->resp, version))
        Py_RETURN_FALSE;
     else