Commit a98aeb58 authored by Neal Norwitz's avatar Neal Norwitz

Use unicode and add a "test" for syslog

parent d5384d64
import syslog
import unittest
from test import test_support
# XXX(nnorwitz): This test sucks. I don't know of a platform independent way
# to verify that the messages were really logged.
# The only purpose of this test is to verify the code doesn't crash or leak.
class Test(unittest.TestCase):
def test_openlog(self):
syslog.openlog('python')
def test_syslog(self):
syslog.openlog('python')
syslog.syslog('test message from python test_syslog')
syslog.syslog(syslog.LOG_ERR, 'test error from python test_syslog')
def test_closelog(self):
syslog.openlog('python')
syslog.closelog()
def test_setlogmask(self):
syslog.setlogmask(syslog.LOG_DEBUG)
def test_log_mask(self):
syslog.LOG_MASK(syslog.LOG_INFO)
def test_log_upto(self):
syslog.LOG_UPTO(syslog.LOG_INFO)
def test_main():
test_support.run_unittest(__name__)
if __name__ == "__main__":
test_main()
......@@ -58,9 +58,10 @@ syslog_openlog(PyObject * self, PyObject * args)
long logopt = 0;
long facility = LOG_USER;
PyObject *new_S_ident_o;
const char *ident;
if (!PyArg_ParseTuple(args,
"S|ll;ident string [, logoption [, facility]]",
"U|ll;ident string [, logoption [, facility]]",
&new_S_ident_o, &logopt, &facility))
return NULL;
......@@ -71,7 +72,10 @@ syslog_openlog(PyObject * self, PyObject * args)
S_ident_o = new_S_ident_o;
Py_INCREF(S_ident_o);
openlog(PyString_AsString(S_ident_o), logopt, facility);
ident = PyUnicode_AsString(S_ident_o);
if (ident == NULL)
return NULL;
openlog(ident, logopt, facility);
Py_INCREF(Py_None);
return Py_None;
......@@ -81,17 +85,21 @@ syslog_openlog(PyObject * self, PyObject * args)
static PyObject *
syslog_syslog(PyObject * self, PyObject * args)
{
char *message;
PyObject *message_object;
const char *message;
int priority = LOG_INFO;
if (!PyArg_ParseTuple(args, "is;[priority,] message string",
&priority, &message)) {
if (!PyArg_ParseTuple(args, "iU;[priority,] message string",
&priority, &message_objecct)) {
PyErr_Clear();
if (!PyArg_ParseTuple(args, "s;[priority,] message string",
&message))
if (!PyArg_ParseTuple(args, "U;[priority,] message string",
&message_objecct))
return NULL;
}
message = PyUnicode_AsString(message_object);
if (message == NULL)
return NULL;
syslog(priority, "%s", message);
Py_INCREF(Py_None);
return Py_None;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment