diff --git a/obexd/plugins/mas.c b/obexd/plugins/mas.c
index 10b972d..bf8d689 100644
--- a/obexd/plugins/mas.c
+++ b/obexd/plugins/mas.c
}
g_string_append(mas->buffer, chunk);
+ mas->finished = TRUE;
proceed:
if (err != -EAGAIN)
return NULL;
}
+ mas->buffer = g_string_new("");
+
*err = messages_get_message(mas->backend_data, name, 0,
get_message_cb, mas);
- mas->buffer = g_string_new("");
-
if (*err < 0)
return NULL;
else
diff --git a/obexd/plugins/messages-dummy.c b/obexd/plugins/messages-dummy.c
index e313c61..945f30c 100644
--- a/obexd/plugins/messages-dummy.c
+++ b/obexd/plugins/messages-dummy.c
#include <errno.h>
#include <stdlib.h>
#include <string.h>
+#include <sys/stat.h>
+#include <sys/mman.h>
#include "obexd/src/log.h"
messages_get_message_cb callback,
void *user_data)
{
- return -ENOSYS;
+ struct session *s = session;
+ FILE *fp;
+ char *path;
+ char *msg, *buffer;
+ int file_size, err = 0;
+ struct stat file_info;
+
+ DBG(" ");
+ path = g_build_filename(s->cwd_absolute, handle, NULL);
+ fp = fopen(path, "r");
+ if (!fp) {
+ DBG("fopen() failed");
+ err = -EBADR;
+ goto file_open_err;
+ }
+
+ if (fstat(fileno(fp), &file_info) < 0) {
+ DBG("Error getting file size");
+ err = -EBADR;
+ goto mmap_err;
+ }
+
+ file_size = file_info.st_size;
+
+ msg = mmap(0, file_size, PROT_READ, MAP_PRIVATE, fileno(fp), 0);
+ if (msg == MAP_FAILED) {
+ DBG("Error mapping file");
+ err = -EBADR;
+ goto mmap_err;
+ }
+
+ buffer = strndup(msg, file_size);
+
+ if (callback)
+ callback(session, 0, 0, buffer, user_data);
+
+ if (munmap(msg, file_size) == -1) {
+ DBG("Error unmapping");
+ err = -EBADR;
+ }
+
+ free(buffer);
+mmap_err:
+ fclose(fp);
+file_open_err:
+ g_free(path);
+ return err;
}
int messages_update_inbox(void *session, messages_status_cb callback,