Diff between 581b305d17b53397ea7abc0d614b64811f2d27cf and 7c028648e2fd0a95bd1e87db81c9f7c63251cef6

Changed Files

File Additions Deletions Status
obexd/plugins/filesystem.c +6 -4 modified
obexd/plugins/ftp.c +4 -4 modified
obexd/plugins/opp.c +2 -2 modified
obexd/plugins/pbap.c +1 -1 modified
obexd/plugins/syncevolution.c +25 -31 modified
obexd/src/mimetype.h +0 -1 modified
obexd/src/obex.c +4 -8 modified
obexd/src/obex.h +2 -4 modified

Full Patch

diff --git a/obexd/plugins/filesystem.c b/obexd/plugins/filesystem.c
index 168058b..cd09af2 100644
--- a/obexd/plugins/filesystem.c
+++ b/obexd/plugins/filesystem.c
@@ -132,10 +132,10 @@ static gchar *file_stat_line(gchar *filename, struct stat *fstat,
 static gpointer filesystem_open(const char *name, int oflag, mode_t mode,
 		gpointer context, size_t *size, int *err)
 {
-	struct obex_session *os = context;
 	struct stat stats;
 	struct statvfs buf;
-	const char *root_folder, *folder;
+	const char *root_folder;
+	char *folder;
 	gboolean root;
 	int fd = open(name, oflag, mode);
 
@@ -151,11 +151,13 @@ static gpointer filesystem_open(const char *name, int oflag, mode_t mode,
 		goto failed;
 	}
 
-	root_folder = obex_get_root_folder(os);
+	root_folder = obex_option_root_folder();
 	folder = g_path_get_dirname(name);
 	root = g_strcmp0(folder, root_folder);
 
-	if (!root || obex_get_symlinks(os)) {
+	g_free(folder);
+
+	if (!root || obex_option_symlinks()) {
 		if (S_ISLNK(stats.st_mode)) {
 			if (err)
 				*err = -EPERM;
diff --git a/obexd/plugins/ftp.c b/obexd/plugins/ftp.c
index 7404738..bcd6951 100644
--- a/obexd/plugins/ftp.c
+++ b/obexd/plugins/ftp.c
@@ -162,13 +162,13 @@ static gint get_by_type(struct ftp_session *ftp, const gchar *type)
 	const char *capability = obex_get_capability_path(os);
 
 	if (type == NULL)
-		return obex_get_stream_start(os, ftp->folder, os);
+		return obex_get_stream_start(os, ftp->folder);
 
 	if (g_str_equal(type, CAP_TYPE))
-		return obex_get_stream_start(os, capability, os);
+		return obex_get_stream_start(os, capability);
 
 	if (g_str_equal(type, LST_TYPE))
-		return obex_get_stream_start(os, ftp->folder, os);
+		return obex_get_stream_start(os, ftp->folder);
 
 	return -ENOENT;
 }
@@ -242,7 +242,7 @@ static gint ftp_chkput(struct obex_session *os, gpointer user_data)
 
 	path = g_build_filename(ftp->folder, name, NULL);
 
-	ret = obex_put_stream_start(os, path, os);
+	ret = obex_put_stream_start(os, path);
 
 	g_free(path);
 
diff --git a/obexd/plugins/opp.c b/obexd/plugins/opp.c
index c99e686..7637516 100644
--- a/obexd/plugins/opp.c
+++ b/obexd/plugins/opp.c
@@ -140,7 +140,7 @@ skip_auth:
 
 	manager_emit_transfer_started(os);
 
-	ret = obex_put_stream_start(os, path, os);
+	ret = obex_put_stream_start(os, path);
 
 	g_free(path);
 	g_free(folder);
@@ -177,7 +177,7 @@ static int opp_get(struct obex_session *os, obex_object_t *obj,
 		return -EPERM;
 
 	if (g_str_equal(type, VCARD_TYPE)) {
-		if (obex_get_stream_start(os, VCARD_FILE, NULL) < 0)
+		if (obex_get_stream_start(os, VCARD_FILE) < 0)
 			return -ENOENT;
 
 	} else
diff --git a/obexd/plugins/pbap.c b/obexd/plugins/pbap.c
index af6ae39..cbf5799 100644
--- a/obexd/plugins/pbap.c
+++ b/obexd/plugins/pbap.c
@@ -441,7 +441,7 @@ static int pbap_get(struct obex_session *os, obex_object_t *obj,
 		return -EBADR;
 
 	pbap->params = params;
-	ret = obex_get_stream_start(os, path, pbap);
+	ret = obex_get_stream_start(os, path);
 
 	g_free(path);
 
diff --git a/obexd/plugins/syncevolution.c b/obexd/plugins/syncevolution.c
index 7a76a49..a40497c 100644
--- a/obexd/plugins/syncevolution.c
+++ b/obexd/plugins/syncevolution.c
@@ -97,6 +97,7 @@ struct synce_context {
 	guint abort_watch;
 	GString *buffer;
 	int lasterr;
+	gchar *id;
 };
 
 static void append_dict_entry(DBusMessageIter *dict, const char *key,
@@ -215,11 +216,29 @@ done:
 
 static gpointer synce_connect(struct obex_session *os, int *err)
 {
+	DBusConnection *conn;
+	struct synce_context *context;
+
 	manager_register_session(os);
 
+	conn = obex_dbus_get_connection();
+	if (!conn)
+		goto failed;
+
+	context = g_new0(struct synce_context, 1);
+	context->dbus_conn = conn;
+	context->lasterr = -EAGAIN;
+	context->id = obex_get_id(os);
+
 	if (err)
 		*err = 0;
 
+	return context;
+
+failed:
+	if (err)
+		*err = -EPERM;
+
 	return NULL;
 }
 
@@ -234,7 +253,7 @@ static int synce_get(struct obex_session *os, obex_object_t *obj,
 	if (stream)
 		*stream = TRUE;
 
-	return obex_get_stream_start(os, NULL, os);
+	return obex_get_stream_start(os, NULL);
 }
 
 static void close_cb(DBusPendingCall *call, void *user_data)
@@ -255,35 +274,18 @@ static void close_cb(DBusPendingCall *call, void *user_data)
 
 static void synce_disconnect(struct obex_session *os, gpointer user_data)
 {
+	struct synce_context *context = user_data;
 
+	g_free(context);
 }
 
 static gpointer synce_open(const char *name, int oflag, mode_t mode,
 		gpointer user_data, size_t *size, int *err)
 {
-	struct obex_session *os = user_data;
-	DBusConnection *conn;
-	struct synce_context *context;
-
-	conn = obex_dbus_get_connection();
-	if (!conn)
-		goto failed;
-
-	context = g_new0(struct synce_context, 1);
-	context->os = os;
-	context->dbus_conn = conn;
-	context->lasterr = -EAGAIN;
-
 	if (err)
 		*err = 0;
 
-	return context;
-
-failed:
-	if (err)
-		*err = -EPERM;
-
-	return NULL;
+	return user_data;
 }
 
 static int synce_close(gpointer object)
@@ -330,9 +332,8 @@ done:
 static ssize_t synce_read(gpointer object, void *buf, size_t count, guint8 *hi)
 {
 	struct synce_context *context = object;
-	struct obex_session *os = context->os;
 	DBusConnection *conn;
-	gchar *id, transport[36], transport_description[24];
+	gchar transport[36], transport_description[24];
 	const char *session;
 	DBusMessage *msg;
 	DBusMessageIter iter, dict;
@@ -353,20 +354,13 @@ static ssize_t synce_read(gpointer object, void *buf, size_t count, guint8 *hi)
 	if (!msg)
 		goto failed;
 
-	id = obex_get_id(os);
-	if (id == NULL) {
-		dbus_message_unref(msg);
-		goto failed;
-	}
-
 	dbus_message_iter_init_append(msg, &iter);
 	dbus_message_iter_open_container(&iter, DBUS_TYPE_ARRAY,
 		DBUS_DICT_ENTRY_BEGIN_CHAR_AS_STRING
 		DBUS_TYPE_STRING_AS_STRING DBUS_TYPE_STRING_AS_STRING
 		DBUS_DICT_ENTRY_END_CHAR_AS_STRING, &dict);
 
-	append_dict_entry(&dict, "id", DBUS_TYPE_STRING, id);
-	g_free(id);
+	append_dict_entry(&dict, "id", DBUS_TYPE_STRING, context->id);
 
 	snprintf(transport, sizeof(transport), "%s.obexd",
 					OPENOBEX_SERVICE);
diff --git a/obexd/src/mimetype.h b/obexd/src/mimetype.h
index 6b558e2..39ad51e 100644
--- a/obexd/src/mimetype.h
+++ b/obexd/src/mimetype.h
@@ -29,7 +29,6 @@ struct obex_mime_type_driver {
 	const char *mimetype;
 	const guint8 *who;
 	guint who_size;
-	gpointer driver_data;
 	gpointer (*open) (const char *name, int oflag, mode_t mode,
 			gpointer driver_data, size_t *size, int *err);
 	int (*close) (gpointer object);
diff --git a/obexd/src/obex.c b/obexd/src/obex.c
index 16cc840..1cd803c 100644
--- a/obexd/src/obex.c
+++ b/obexd/src/obex.c
@@ -638,21 +638,19 @@ static void cmd_setpath(struct obex_session *os,
 	os_set_response(obj, err);
 }
 
-int obex_get_stream_start(struct obex_session *os,
-		const gchar *filename, gpointer driver_data)
+int obex_get_stream_start(struct obex_session *os, const gchar *filename)
 {
 	gint err;
 	gpointer object;
 	size_t size;
 
-	object = os->driver->open(filename, O_RDONLY, 0, driver_data,
+	object = os->driver->open(filename, O_RDONLY, 0, os->service_data,
 								&size, &err);
 	if (object == NULL) {
 		error("open(%s): %s (%d)", filename, strerror(-err), -err);
 		goto fail;
 	}
 
-	os->driver->driver_data = driver_data;
 	os->object = object;
 	os->offset = 0;
 	os->size = size;
@@ -669,14 +667,13 @@ fail:
 	return err;
 }
 
-int obex_put_stream_start(struct obex_session *os,
-		const gchar *filename, gpointer driver_data)
+gint obex_put_stream_start(struct obex_session *os, const gchar *filename)
 {
 	gint len;
 	int err;
 
 	os->object = os->driver->open(filename, O_WRONLY | O_CREAT | O_TRUNC,
-					0600, driver_data,
+					0600, os->service_data,
 					os->size != OBJECT_SIZE_UNKNOWN ?
 					(size_t *) &os->size : NULL, &err);
 	if (os->object == NULL) {
@@ -685,7 +682,6 @@ int obex_put_stream_start(struct obex_session *os,
 	}
 
 	os->path = filename;
-	os->driver->driver_data = driver_data;
 
 	if (!os->buf) {
 		debug("PUT request checked, no buffered data");
diff --git a/obexd/src/obex.h b/obexd/src/obex.h
index 00336c7..5b92808 100644
--- a/obexd/src/obex.h
+++ b/obexd/src/obex.h
@@ -42,10 +42,8 @@ struct obex_session;
 
 void obex_connect_cb(GIOChannel *io, GError *err, gpointer user_data);
 
-int obex_get_stream_start(struct obex_session *os,
-		const gchar *filename, gpointer user_data);
-int obex_put_stream_start(struct obex_session *os,
-		const gchar *filename, gpointer user_data);
+int obex_get_stream_start(struct obex_session *os, const gchar *filename);
+int obex_put_stream_start(struct obex_session *os, const gchar *filename);
 const char *obex_get_name(struct obex_session *os);
 ssize_t obex_get_size(struct obex_session *os);
 const char *obex_get_type(struct obex_session *os);