diff options
-rw-r--r-- | examples/python/mimetest.py | 2 | ||||
-rw-r--r-- | include/mailutils/cpp/message.h | 2 | ||||
-rw-r--r-- | libmu_cpp/message.cc | 21 | ||||
-rw-r--r-- | python/libmu_py/message.c | 20 | ||||
-rw-r--r-- | python/mailutils/message.py | 6 |
5 files changed, 38 insertions, 13 deletions
diff --git a/examples/python/mimetest.py b/examples/python/mimetest.py index c14d72789..471a05211 100644 --- a/examples/python/mimetest.py +++ b/examples/python/mimetest.py @@ -90,7 +90,7 @@ def message_display_parts (msg, indent): else: # Save the attachements. try: - fname = part.get_attachment_name () + fname, lang = part.get_attachment_name () except: fname = util.tempname () diff --git a/include/mailutils/cpp/message.h b/include/mailutils/cpp/message.h index 19f076d4d..bdd50af7c 100644 --- a/include/mailutils/cpp/message.h +++ b/include/mailutils/cpp/message.h @@ -68,6 +68,8 @@ class Message void save_attachment (const std::string& filename); Message& unencapsulate (); std::string get_attachment_name (); + std::string get_attachment_name (const std::string& charset, + char* lang=NULL); }; } diff --git a/libmu_cpp/message.cc b/libmu_cpp/message.cc index 21f3ec6d1..a02360051 100644 --- a/libmu_cpp/message.cc +++ b/libmu_cpp/message.cc @@ -224,8 +224,25 @@ Message :: get_attachment_name () char *c_name; std::string name; - /* FIXME: CS/Lang info is ignored */ - int status = mu_message_aget_attachment_name (msg, &c_name, NULL); + int status = mu_message_aget_decoded_attachment_name (msg, NULL, &c_name, + NULL); + if (status) + throw Exception ("Message::get_attachment_name", status); + if (c_name) { + name = c_name; + free (c_name); + } + return name; +} + +std::string +Message :: get_attachment_name (const std::string& charset, char *lang) +{ + char *c_name; + std::string name; + + int status = mu_message_aget_decoded_attachment_name (msg, charset.c_str (), + &c_name, &lang); if (status) throw Exception ("Message::get_attachment_name", status); if (c_name) { diff --git a/python/libmu_py/message.c b/python/libmu_py/message.c index fc71cbf0e..58f9c5bae 100644 --- a/python/libmu_py/message.c +++ b/python/libmu_py/message.c @@ -282,14 +282,22 @@ api_message_get_attachment_name (PyObject *self, PyObject *args) { int status; char *name = NULL; + char *charset = NULL; + char *lang = NULL; + PyObject *py_ret; PyMessage *py_msg; - if (!PyArg_ParseTuple (args, "O!", &PyMessageType, &py_msg)) + if (!PyArg_ParseTuple (args, "O!|z", &PyMessageType, &py_msg, &charset)) return NULL; - /* FIXME: CS/Lang info is ignored */ - status = mu_message_aget_attachment_name (py_msg->msg, &name, NULL); - return status_object (status, PyString_FromString (name ? name : "")); + status = mu_message_aget_decoded_attachment_name (py_msg->msg, charset, + &name, &lang); + + py_ret = PyTuple_New (3); + PyTuple_SetItem (py_ret, 0, PyInt_FromLong (status)); + PyTuple_SetItem (py_ret, 1, PyString_FromString (name ? name : "")); + PyTuple_SetItem (py_ret, 2, lang ? PyString_FromString (lang) : Py_None); + return _ro (py_ret); } static PyObject * @@ -314,12 +322,10 @@ static PyObject * api_message_unencapsulate (PyObject *self, PyObject *args) { int status; - char *filename = NULL; PyMessage *py_msg; PyMessage *py_unen = PyMessage_NEW (); - if (!PyArg_ParseTuple (args, "O!|s", &PyMessageType, &py_msg, - &filename)) + if (!PyArg_ParseTuple (args, "O!", &PyMessageType, &py_msg)) return NULL; Py_INCREF (py_unen); diff --git a/python/mailutils/message.py b/python/mailutils/message.py index 0f4744a78..89aa984d4 100644 --- a/python/mailutils/message.py +++ b/python/mailutils/message.py @@ -138,11 +138,11 @@ class Message: raise MessageError (status) return uidl - def get_attachment_name (self): - status, name = message.get_attachment_name (self.msg) + def get_attachment_name (self, charset=None): + status, name, lang = message.get_attachment_name (self.msg, charset) if status: raise MessageError (status) - return name + return name, lang def save_attachment (self, filename = ''): status = message.save_attachment (self.msg, filename) |